Suoritin

Question: Mikä oli ensimmäinen yleiskäyttöinen tietokone, jossa ohjelma voitiin tallettaa tietokoneen muistiin?



Suoritin tai prosessori ( eli CPU) on tietokoneen osa, joka suorittaa tietokoneohjelman sisältämiä konekielisiä käskyjä. Se on tietokoneen keskeisimpiä osia. Nykyisissä suorittimissa kaikki osat on pakattu yhdelle mikropiirille, joten ne ovat mikroprosessoreita (MPU). 
Yksittäinen yksinkertainen suoritin voi suorittaa kerrallaan vain yhtä ohjelmaa, mutta sen tehtäviä voidaan vaihdella erittäin nopeasti, jolloin suoritus näyttää käyttäjästä rinnakkaiselta (ks. Moniajo). Monisäikeistetyssä suorittimessa voidaan suorittaa aidosti yhtä aikaa useampaa kuin yhtä tehtävää, samoin moniydinsuorittimessa on samaan mikropiiriin rakennettu kaksi tai useampia suorittimia.
Suorittimia suunnitellaan useisiin erilaisiin käyttötarkoituksiin. Suorittimia valmistetaan erilaisia supertietokoneisiin, sulautettuihin järjestelmiin ja henkilökohtaisiin tietokoneisiin. Erikoistuneita apusuorittimia ovat digitaalinen signaaliprosessori (DSP), grafiikkaprosessori (GPU) ja matematiikkasuoritin (FPU), joka nykyään usein integroidaan yleiskäyttöiseen suorittimiin. Osa optimoidaan erittäin pieneen tehonkulutukseen, osa suureen laskentatehoon tietynlaiselle datalle, osa taas mahdollisimman laajaan yleiskäyttöisyyteen, jolloin sama mikropiiri saattaa sisältää useita eri oheislaitteita ja kymmeniä liityntäväyliä. Näytöllisten älylaitteiden myötä tärkeäksi ryhmäksi ovat nousseet pitkälle integroidut ns. järjestelmäpiirit (SoC), joissa voi olla samassa piirissä mukana mm. muisteja, signaaliprosessori ja monipuolinen näytönohjain.
Historia


Ensimmäinen yleiskäyttöinen tietokone, jossa ohjelma voitiin tallettaa tietokoneen muistiin, oli Manchesterin yliopiston Small-Scale Experimental Machine.[1] Koska suoritettava ohjelma voitiin vaihtaa lataamalla toinen ohjelma eikä käyttötarkoitusta siten rajattu tätä voitaneen pitää tietokonesuorittimien alkuna vastakohtana laskukoneelle. Aikaisemmissa laitteissa ohjelman muuttaminen saatoi tarkoittaa laitteen kytkentöjen muuttamista ohjelman lataamisen sijaan (ks. ENIAC).
Kuten tietokonetekniikka yleisesti voidaan suorittimet jakaa neljään sukupolveen teknologian mukaan:
sukupolvi: elektroniputket
sukupolvi: diskreetit transistorit: aluksi germanium-transistoreja ja myöhemmin piihin perustuvat
sukupolvi: mikropiirit
sukupolvi: mikroprosessorit
Kvanttitietokoneen toteutus voi olla merkittävä seuraava kehitysaskel teknologiassa. Myös optinen siru voi olla tuleva kehitysaskel.
Arkkitehtuurit
Suoritinarkkitehtuurit voidaan jakaa ryhmiin esimerkiksi konekäskyjen perusrakenteen mukaan seuraavasti:
CISC (Complex Instruction Set Computer)
RISC (Reduced Instruction Set Computer)
VLIW (Very Long Instruction Word)
TTA (Transport Triggered Architecture)
Suorittimien käskykantarakenteet voidaan ryhmitellä kolmeen seuraavasti:[2]
L/S load-store arkkitehtuuri
R/M register-memory arkkitehtuuri
R+M register-plus-memory arkkitehtuuri
Ominaisuudet
Tietokoneen yleisnopeus riippuu paljon juuri suorittimen nopeudesta.[3] Suorittimen nopeus riippuu sekä sen käyttämästä arkkitehtuurista että kellotaajuudesta. Kellotaajuus ilmoitetaan yleensä Hertsin monikertoina kuten megahertseinä (MHz) tai gigahertseinä (GHz), ja suoritin toimii sen tahdissa. Pelkän kellotaajuuden lisäksi suorittimen nopeuteen vaikuttavat monet tekniset ratkaisut, kuten:
kuinka leveitä prosessorin lukuja käsittelevät yksiköt ja liityntäväylät ovat (yleensä 4, 8, 16, 32 tai 64 bittiä),
kuinka monta ja minkä tyyppisiä käskyjä suoritin kykenee suorittamaan samanaikaisesti (liukuhihna),
kuinka suuria välimuisteja suorittimessa on,
miten tehokkaasti edelliset on toteutettu ja niihin liittyvät ongelmatilanteet on arkkitehtuurissa ratkaistu.
Eräitä 2-bittisiä suorittimia () on myös valmistettu.[4] BSP-suorittimia pystyi kytkemään rinnakkain muodostamaan "suuremman" suorittimen.[4]
Perustoiminnot
Ohjelmalaskuri () pitää suorituksen sijaintitietoa.[3] Eräissä suoritinarkkitehtuureissa kuten MIPS käskyt ovat kiinteämittaisia 32-bittisiä arvoja. Toisissa arkkitehtuureissa kuten x86 käskyn pituus vaihtelee.[5]
Muita keskeisiä toimintoja ovat muun muassa pino-osoitin (): eräissä suorittimissa on omat käskyt pinon käsittelyyn kun taas eräissä se on ohjelman vastuulla.[6]
Suorittimen keskeiset osat ovat laskentayksikkö (, ALU)[3], valvontayksikkö (, CU) [3] ja yleensä useita rekistereiksi kutsuttuja käsiteltävän tiedon tallentavia muistipaikkoja.[3] Prosessorin toimintaa on noutaa muistista käsky ja siihen liittyvä luku tai luvut, suorittaa kyseinen käsky ALU-yksikössään ja palauttaa tulos muistiin. Yksittäinen käsky voi olla esim. "laske yhteen rekisterin A ja muistipaikan xx sisältö ja siirrä tulos rekisteriin B".
Yksinkertaistetusti suorittimen toiminta on hakea muistista käskyjä, tehdä niillä jokin operaatio ja kirjoittaa tulos muistiin (myös muut laitteet ja väylät voivat näkyä muistipaikkoina suorittimelle).[3][7] Toiminta voidaan jakaa neljään vaiheeseen seuraavasti:[7]
muistihaku (fetch)
käskynpurku (decode)
suoritus (execute)
tallennus (store)
Erikoiskäskyt
Prosessorin erikoiskäskyistä voi olla suurta hyötyä etenkin matemaattisissa sovelluksissa. Yksi erikoiskäsky voi korvata kymmeniä peruskäskyjä, vaikka sen suoritukseen aikaa kuluu vain saman verran kuin yhden tai muutaman peruskäskyn suoritukseen. Välimuistin hyöty on, että muistista haettava ja sinne kirjoitettava tieto saadaan nopeasta välimuistista huomattavasti nopeammin kuin hitaammasta keskusmuistista. Merkittäviä nopeusetuja saadaan myös kirjoittamalla tehokasta ohjelmakoodia.
Valmistustekniikka
Valmistustekniikan kehittyessä mikropiirien sisältämien transistorien määrä kaksinkertaistuu noin puolessatoista vuodessa, kuten ns. Mooren laki on ennustanut. Suorittimien kohdalla tämä on toistaiseksi pitänyt melko hyvin paikkansa, mikä on mahdollistanut yhä monimutkaisempien ja paremman suorituskyvyn mahdollistavien arkkitehtuurien toteuttamisen. 
Suorittimet tuottavat toimiessaan hukkalämpöä, joka saattaa vaikuttaa suorittimen toiminnan luotettavuuteen tai liiallisena jopa tuhota suorittimen. Hukkalämmön johtamiseksi pois suorittimesta voidaan käyttää esimerkiksi jäähdytysripaa, jota muotonsa vuoksi monesti kutsutaan jäähdytyssiiliksi, ja siihen usein liitettyä ilman virtausta tehostavaa tuuletinta, tai nestejäähdytystä. Myös muita jäähdytysratkaisuja voidaan käyttää, kuten esimerkiksi nämä supertietokoneet:
Cray-1 käytti freonipohjaista jäähdytystä (lämpöpumppu)
Cray-2 upotti piirit Fluorinert-nimiseen sähköä johtamattomaan nesteeseen (konvektio)
Käyttämällä kehittyneempää valmistustekniikkaa voidaan suorittimen virrankäyttöä vähentää ja tämän vaikutuksesta myös tuotettua hukkalämpöä voidaan vähentää. Vastaavasti transistorien määrän lisääminen nostaa tarvittavan virran määrää. Eräs puolijohteiden valmistusmenetelmä on CMOS.
Ominaisuuksien laajentaminen
Suorittimelle on mahdollista integroida samalle piirille useita suoritinytimiä, suurempia ja monitasoisempia välimuisteja, sekä tukipiirejä kuten 2D- tai 3D-grafiikan käsittelyyn erikoistunut grafiikkasuoritin tai muistinhallintayksikkö. Nykyaikaisissa suorittimissa on muistinhallintayksikkö (MMU) ja matematiikkasuoritin (FPU) integroituna samalle piirille. Järjestelmäpiirit integroivat suorittimen lisäksi samalle piirille IO-piirejä ja useita muita komponentteja.
Moniprosessointi

Yksittäinen tietokone voi sisältää yhden tai useampia suorittimia, jolloin kyseessä on moniprosessointi.
Moniytimellisyys

Suorittimissa voi olla kaksi tai useampia ytimiä. Moniytimellisyys mahdollistaa sen, että monia raskaita laskutehtäviä vaativia ohjelmia voidaan ajaa tietokoneella samanaikaisesti ilman, että muiden prosessien suoritus häiriintyy, ja että monisäikeisien yksittäisien prosessien suoritus voidaan jakaa usean ytimen kesken nostaen sen suoritustehoa.
Ytimet voivat olla joko identtisiä, tai ne voivat olla erikoistuneita erilaisiin tehtäviin. Eräissä suorittimissa kuten järjestelmäpiireissä on integroituna apusuoritin kuten Digitaalinen signaaliprosessori (DSP) varsinaisen CPU-ytimen lisäksi.
Moniydinsuoritin voi useaan yksinkertaiseen suorittimeen verrattuna käyttää hieman vähemmän sähköä ja tuottaa vähemmän lämpöä.[8] Yleensä moniydinsuorittimen kaikki ytimet kuitenkin jakavat samat oheislaiteväylät ja käyttävät samaa keskusmuistia.
Monisäikeistys
Monisäikeistys  on tekniikka, jolla sama ydin voi suorittaa kahta tai useampaa erillistä ohjelmasäiettä yhtäaikaisesti (rinnakkain). Tekniikka on yksi kehityssuunta suorituskyvyn lisäämiseen ja aiheesta on julkaistu useita tutkimuksia.[9]
Kaksi kehityssuuntausta ovat:
 (SMT), prosessorin on oltava superscalar
, tai , myös nimellä 
Eri valmistajilla on eri tuotenimiä tekniikan toteuttamisesta, näitä ovat mm. Intelin Hyper-threading ja SPARC CoolThreads. IBM POWER8 käyttää yleistä termiä  (SMT).[10]
Symmetrinen monisäikeistys on jatkokehitystä superscalar- ja moniprosessointi-tekniikkaan nähden ja hyödyntää ohjelmissa olevaa sekä käskytason rinnakkaisuutta (, ILP) että säietason rinnakkaisuutta (, TLP).[11]
Suoritinperheitä
Suorittimet voidaan jakaa perheisiin niiden yhteensopivuuden mukaan. Tyypillisesti saman perheen uudempi suoritin pystyy suorittamaan ohjelmia, jotka on tehty saman perheen aikaisimmille suorittimille. Toisinpäin tämä ei välttämättä ole mahdollista erilaisten käskykantalaajennusten vuoksi.
Ensimmäisen sukupolven suorittimet
Ensimmäisen sukupolven suorittimet olivat osa laajempaa kokonaisuutta ja osa itse tietokoneen rakennetta ja suunnittelua.[12]
Ensimmäisen sukupolven suorittimet perustuivat elektroniputkien käyttöön.
Toisen ja kolmannen sukupolven suorittimet

Minitietokoneissa ja suurtietokoneissa käytetyissä tietokoneissa oli huomattavia mallikohtaisia eroja. Kaikki samaan mallisarjaan kuuluneet eivät välttämättä olleet yhteensopivia muiden saman sarjan mallien kanssa. Toisen sukupolven suorittimet perustuivat diskreettien (erillisten) transistorien käyttöön. Kolmannen sukupolven suorittimet käyttivät useita mikropiirejä.
IBM S/360 mahdollisti samojen ohjelmien ajamisen erilaisissa saman arkkitehtuurin mukaisissa tietokoneissa mikrokoodin avulla, tekniikka perustui SLT-transistoreihin
IBM S/370 käytti SSI-mikropiirejä
DEC PDP-11 suunniteltiin SSI-mikropiireillä, mutta käytti LSI-mikropiirejä kun ne tulivat käytännöllisiksi
Digitalin VAX arkkitehtuuri
Fairchild F8 julkaistiin aluksi kahden mikropiirin versiona, mutta myöhemmin julkaistiin yhdelle piirille integroitu versio[13]
Neljännen sukupolven suorittimet

Neljännen sukupolven suorittimet ovat mikroprosessoreja, joissa kaikki suorittimen toiminnot ovat integroituna yhdelle mikropiirille.
Intelin x86-sarja, alkaen 16-bittisestä mallista 8086 (1978) jatkuen IA-32-malleihin (1985), mukaan lukien yhteensopivat muilta valmistajilta
Intelin ja Hewlett-Packardin IA-64 Itanium-suorittimet.
AMD:n kehittämän AMD64-käskykannan suorittimet, ml. Intelin valmistamat yhteensopivat suorittimet.
ARM-suorittimet useilta eri valmistajilta
Zilog Z80-suoritinperhe, 8-bittinen, julkaistu 1976.
Motorolan 6800-suoritinperhe, 8-bittinen, julkaistu 1974.
MOS Technologyn MOS 6502 ja sen kehitysversiot (julkaistu 1975), joita käytettiin mm. Commodoren kuuluisissa VIC-20- ja C-64-tietokoneissa.
Motorolan 68000-suoritinperhe, julkaistu 1979. Käytetty mm. varhaisissa Maceissa ja Amigassa.
Texas Instrumentsin TMS320-signaaliprosessoriperhe (esitelty 1983).
National Semiconductorin NS32000 sarja.
Sun Microsystemsin SPARC-suoritinperhe.
MIPS Technologiesin MIPS-suoritinperhe
Hewlett-Packardin PA-RISC
Digitalin Alpha-suoritinperhe
IBM:n POWER-suoritinperhe sekä PowerPC-suoritinperhe
Tilera 64-120-ytimiset palvelimille tarkoitetut suorittimet
NEC V800 RISC-perhe
Fujitsu FR-V (Fujitsu RISC-VLIW) mediakäsittelyyn
Apollo Computerin Apollo PRISM RISC-suoritin
Hitachin SuperH RISC-suoritin
Blackfin
Microblaze
OpenRISC
Suoritinperheet voidaan edelleen jakaa arkkitehtuureihin niiden iän ja sukupolven mukaan. Esimerkiksi SPARC-perheen aikaisemmat arkkitehtuurit, HyperSPARC ja SuperSPARC, toteuttavat SPARC v7 -käskykannan ja uudemmat arkkitehtuurit 64-bittisen SPARC v9 -käskykannan, jonka toteuttavia malleja ovat Sun Microsystemsin valmistaman UltraSPARCin eri mallit ja Fujitsun SPARC64.
x86 suorittimissa on ollut useita kilpailevia valmistajia, joiden suorittimet käyttävät yhteensopivaa käskykantaa (IA-32, AMD64 tai edeltävät). Suoritinvalmistajilla on useita arkkitehtuureita, jotka jakaantuvat useisiin malleihin, joita on saatavilla eri kellotaajuuksilla.
Käskylaajennukset
Useat valmistajat ja suoritinsukupolvet laajentavat suorittimen käskykantaa uusilla käskyillä. Tällaisia laajennuksia ovat mm. MMX, VIS, 3DNow!, SSE ja AltiVec, joista on kaikista lisäksi useampia versioita uusien arkkitehtuurien mukana.
Toimintatilat
Useat suorittimet toteuttavat supervisor tilan, jossa käyttöjärjestelmän kerneli yleensä suoritetaan. Tässä tilassa suoritin asettaa vähemmän rajoituksia kuin käyttäjätilassa ().
Nykyiset suorittimet lisäävät virtualisointitukea hypervisor ominaisuuksilla.
Katso myös
Tavujärjestys
Käskykanta Transclusion error: {{En}} is only for use in File namespace. Use {{lang-en}} or {{en icon}} instead.
Superskalaarinen suoritin Transclusion error: {{En}} is only for use in File namespace. Use {{lang-en}} or {{en icon}} instead.
Handlerin luokittelu
Fengin luokittelu
Lähteet


*
Luokka:Seulonnan keskeiset artikkelit