Keskusyksikkö (CPU) — mitä prosessori tekee ja miten se toimii

Keskusyksikkö (CPU) – selkeä opas prosessorin toiminnasta, kellotaajuudesta (GHz), suorituskyvystä ja roolista tietokoneissa sekä sulautetuissa järjestelmissä.

Tekijä: Leandro Alegsa

Keskusyksikkö (CPU) on tärkeä osa jokaista tietokonetta. Keskusyksikkö lähettää signaaleja, joilla ohjataan tietokoneen muita osia, lähes samalla tavalla kuin aivot ohjaavat kehoa.

Suoritin on elektroninen kone, joka työskentelee tietokoneen tekemien asioiden, niin sanottujen ohjeiden, perusteella. Se lukee käskiluettelon ja suorittaa (executes) jokaisen käskyn järjestyksessä. Luettelo ohjeista, jotka CPU voi suorittaa, on tietokoneohjelma.

Kellotaajuus eli suorittimen sisäisten osien nopeus mitataan hertseinä (Hz). Nykyaikaiset prosessorit toimivat usein niin nopeasti, että niiden sijaan käytetään gigahertsin (GHz) mittausta. Yksi GHz on 1 000 000 000 sykliä sekunnissa (eli 1 000 000 000 Hz).

Useimmat pöytätietokoneissa (kotitietokoneissa) käytetyt suorittimet ovat joko Intelin tai Advanced Micro Devicesin (yleensä lyhennettynä AMD) valmistamia mikroprosessoreita. Muita suorittimia tai suoritinarkkitehtuureja kehittäviä yrityksiä ovat ARM (jonka Nvidia aiemmin yritti ostaa, mutta kauppa kariutui), IBM ja myös AMD (jonka yhteydessä on aiemmin ostettu ATI Technologies). Suurin osa ARM-arkkitehtuurin suoritinmalleista löytyy sulautetuista järjestelmistä ja mobiililaitteista, kuten matkapuhelimista, autoista, videopelikonsoleista tai teollisuuden laitteista.

Miten CPU toimii lyhyesti

Prosessorin perustoiminto koostuu toistuvasta hakeminen–dekoodaus–suoritus -syklistä (fetch–decode–execute). Käytännössä CPU:

  • lukee (fetch) seuraavan käskyn muistista,
  • tulkkaa (decode) mitä käsky käskee tehdä,
  • suorittaa (execute) käskyn, joka voi olla laskutoimitus, tietojen siirto rekisterien tai muistin välillä tai hyppy toiseen ohjelman kohtaan.
Näitä vaiheita nopeuttavat erilaiset tekniikat, kuten pipelöinti, rinnakkaisuus ja ennakoiva haaratunnistus (branch prediction).

CPU:n pääosat

Yksinkertaistettuna prosessorin tärkeimpiä osia ovat:

  • Ohjausyksikkö (control unit) — hallitsee käskyjen suorittamisen järjestystä ja signaalien lähettämistä muihin osiin.
  • Aritmeettis-looginen yksikkö (ALU) — suorittaa peruslaskutoimituksia ja loogisia operaatioita.
  • Rekisterit — erittäin nopeat pienet muistit, joissa pidetään väliaikaistietoja ja osoitteita.
  • Välimuisti (cache) — L1, L2, L3 — nopeuttaakseen muistinkäyttöä, prosessoreissa on eri tasoisia välimuisteja, joissa yleisesti käytetyt tiedot pidetään lähellä ydintä.
  • Ohjelmapinot ja suorituslogiikka — mm. out-of-order-suoritus, pipelöinti ja haaranennusteet parantavat suorituskykyä.

Moniydin- ja säiketysratkaisut

Nykyiset suorittimet sisältävät usein useita ydinprosessoreita (cores). Jokainen ydin pystyy suorittamaan oman käskysarjansa, jolloin useat ohjelman osat tai eri ohjelmat voivat toimia yhtä aikaa. Lisäksi tekniikat kuten Intelin Hyper-Threading tai AMD:n SMT mahdollistavat useamman virtuaalisen säikeen (threads) kullekin ydinsarjalle, mikä parantaa suorituskykyä rinnakkaistehtävissä.

Kellonopeus vs. suorituskyky

Kellotaajuus (GHz) kertoo, kuinka monta sykliä sekunnissa suoritin tekee, mutta se ei yksin määrää suorituskykyä. Tärkeitä tekijöitä ovat myös: arkkitehtuuri, käskynsuorituskyky per sykli (IPC), välimuistin koko ja nopeus, ytimien määrä sekä ohjelman rinnakkainajo-ominaisuudet. Siten kaksi eri arkkitehtuuria tai eri sukupolven prosessoria, vaikka niillä olisi sama kellotaajuus, voivat suoriutua hyvin eri tavalla.

Teho, jäähdytys ja liitännät

Prosessoreiden tehonkulutus ja lämpö (TDP) vaikuttavat siihen, millainen jäähdytys tarvitaan ja millaisessa laitteessa suoritinta voidaan käyttää. Pöytäkoneen suorittimet vaativat usein tehokkaan jäähdytyksen (tuulettimet, nestejäähdytys), kun taas mobiilisuorittimissa painotetaan energiatehokkuutta.

Ohjelmisto, käskykanta ja mikroarkkitehtuuri

Prosessorin suorittamat käskyt määräytyvät sen käyttämän käskykannan (instruction set architecture, esim. x86, ARM) perusteella. Mikroarkkitehtuuri (esim. Intelin Core‑sukupolvet tai AMD:n Zen‑sukupolvet) määrittää, miten nämä käskyt toteutetaan fyysisesti ja kuinka tehokkaasti.

Miksi prosessoria kehitetään jatkuvasti

Prosessorien kehitys tähtää parempaan suorituskykyyn, pienempään virrankulutukseen ja uusiin ominaisuuksiin kuten integroituihin grafiikkayksiköihin, suorittimen sisäiseen turvaominaisuuksiin ja koneoppimisestä hyötyviin laitteistokiihdyttimiin. Valmistustekniikat (nanometrit) ja transistoritiheys vaikuttavat suoraan suorituskykyyn ja tehokkuuteen.

Käytännön vinkkejä

  • Osta prosessori käyttötarkoituksen mukaan: pelaamiseen, sisällönluontiin, virtuaalikoneisiin tai kevyempään toimistokäyttöön on eri vaatimukset.
  • Älä vertaile pelkästään GHz‑lukuja — katso myös ytimiä, välimuisteja, arkkitehtuuria ja testituloksia (benchmarkit).
  • Pidä jäähdytys ja virtalähde riittävänä, jos aiot ylikellottaa (overclockata) prosessoria.

Yhteenvetona: CPU on tietokoneen toiminnan keskus. Vaikka sen perusperiaate on yksinkertainen (käskysykli), nykyaikaiset suorittimet ovat monimutkaisia järjestelmiä, joissa yhdistyy arkkitehtuuri, rinnakkaisuus, tehokas muistin hallinta ja energiatehokkuus.




  Pentium-suoritin tietokoneen sisällä  Zoom
Pentium-suoritin tietokoneen sisällä  

Suoritintyypit

1900-luvulla insinöörit keksivät monia erilaisia tietokonearkkitehtuureja. Nykyään useimmat pöytätietokoneet käyttävät joko 32-bittisiä tai 64-bittisiä suorittimia. 32-bittisen suorittimen ohjeet ovat hyviä käsittelemään 32 bitin kokoista dataa (useimmat ohjeet "ajattelevat" 32-bittisessä suorittimessa 32-bittisesti). Vastaavasti 64-bittinen suoritin on hyvä käsittelemään 64-bittistä dataa (ja usein myös 32-bittistä dataa). Sitä datan kokoa, jota suoritin käsittelee parhaiten, kutsutaan usein suorittimen sanakooksi. Monissa vanhoissa 70-, 80- ja 90-luvun alun suorittimissa (ja monissa nykyaikaisissa sulautetuissa järjestelmissä) on 8- tai 16-bittinen sanakoko. Kun suorittimet keksittiin 1900-luvun puolivälissä, niissä oli monia eri sanakokoja. Joissakin oli eri sanakoot käskyille ja tiedoille. Vähemmän suosittuja sanakokoja ei myöhemmin enää käytetty.

Useimmat suorittimet ovat mikroprosessoreita. Tämä tarkoittaa, että prosessori on vain yksi siru. Joissakin mikroprosessoripiirissä on myös muita komponentteja, ja ne ovat kokonaisia yhden sirun "tietokoneita". Tätä kutsutaan mikrokontrolleriksi.


 

Rekisterit

Kun CPU suorittaa tietokoneohjelmaa, sen on tallennettava jonnekin tiedot, joita käskyt käyttävät (tiedot, joita ne lukevat ja kirjoittavat). Tätä tallennustilaa kutsutaan rekisteriksi. CPU:lla on yleensä useita rekistereitä. Rekistereihin on päästävä käsiksi (lukemaan ja kirjoittamaan) hyvin nopeasti. Siksi ne ovat osa itse suorittimen piiriä.


 

Muisti

Kaikkien tietojen tallentaminen rekistereihin tekisi useimmista suorittimista liian monimutkaisia (ja hyvin kalliita). Siksi rekistereihin tallennetaan yleensä vain ne tiedot, joita suoritin käsittelee "juuri nyt". Loput ohjelman käyttämästä datasta tallennetaan RAM-muistiin (Random Access Memory). Mikrokontrollereita lukuun ottamatta RAM-muisti on yleensä tallennettu suorittimen ulkopuolelle erillisille siruille.

Kun CPU haluaa lukea tai kirjoittaa RAM-muistissa olevia tietoja, se antaa osoitteen kyseisille tiedoille. Jokaisella RAM-muistissa olevalla tavulla on muistiosoite. Osoitteiden koko on usein sama kuin sanan koko: 32-bittinen CPU käyttää 32-bittisiä osoitteita jne. Pienemmät suorittimet, kuten 8-bittiset suorittimet, käyttävät kuitenkin usein osoitteita, jotka ovat sanakokoa suurempia. Muuten ohjelman maksimipituus olisi liian lyhyt.

Koska osoitteiden koko on rajoitettu, myös muistin enimmäismäärä on rajoitettu. 32-bittiset prosessorit pystyvät yleensä käsittelemään enintään 4 Gt:n RAM-muistia. Näin monta eri tavua voidaan valita 32-bittisellä osoitteella (jokaisella bitillä voi olla kaksi arvoa - 0 ja 1 - ja 232 tavua on 4 Gt). 64-bittinen prosessori voi käsitellä jopa 16 EB RAM-muistia (16 exatavua, noin 16 miljardia gigatavua eli 16 miljardia miljardia miljardia tavua). Käyttöjärjestelmä saattaa rajoittaa sen käyttämään pienempiä määriä.

RAM-muistiin tallennetut tiedot ovat yleensä haihtuvia. Tämä tarkoittaa, että ne häviävät, jos tietokone sammutetaan.

Muistinhallintayksiköt (MMU) ja virtuaalimuisti

Nykyaikaisissa suorittimissa käytetään usein muistinhallintayksikköä (MMU). MMU on komponentti, joka kääntää CPU:lta tulevat osoitteet (yleensä) eri RAM-osoitteisiin. Kun käytetään MMU:ta, ohjelmassa käytetyt osoitteet eivät (yleensä) ole "todellisia" osoitteita, joihin tiedot on tallennettu. Tätä kutsutaan virtuaalimuistiksi (todellisen muistin vastakohta). Tässä luetellaan muutamia syitä, miksi MMU:n käyttö on hyvä asia:

  • MMU voi "piilottaa" muiden ohjelmien muistin ohjelmalta. Tämä tapahtuu siten, että mitään osoitteita ei käännetä "piilotettuihin" osoitteisiin ohjelman ollessa käynnissä. Tämä on hyvä asia, koska se tarkoittaa, että ohjelmat eivät voi lukea ja muokata muiden ohjelmien muistia, mikä parantaa turvallisuutta ja vakautta. (Ohjelmat eivät voi "vakoilla" toisiaan tai "astua toistensa varpaille").
  • Monet MMU:t voivat tehdä joistakin muistin osista kirjoituskelvottomia, lukukelvottomia tai suorituskelvottomia (eli kyseiseen muistin osaan tallennettua koodia ei voi suorittaa). Tämä voi olla hyvä vakauden, turvallisuuden ja muiden syiden vuoksi.
  • MMU:t mahdollistavat sen, että eri ohjelmilla on eri "näkymät" muistiin. Tämä on kätevää monissa eri tilanteissa. Esimerkiksi ohjelman "pääkoodi" voi aina olla samassa (virtuaali)osoitteessa ilman, että se törmää muihin ohjelmiin. Se on kätevää myös silloin, kun ohjelmat jakavat keskenään monia eri koodinpätkiä (kirjastoista).
  • MMU:t mahdollistavat sen, että kirjastojen koodi ilmestyy eri osoitteisiin joka kerta, kun ohjelma ajetaan. Tämä on hyvä asia, koska jos ei tiedetä, missä asiat ovat muistissa, hakkereiden on usein vaikeampi saada ohjelmia tekemään pahoja asioita. Tätä kutsutaan osoiteavaruuden satunnaistamiseksi.
  • Kehittyneet ohjelmat ja käyttöjärjestelmät voivat käyttää MMU:n avulla temppuja, joiden avulla voidaan välttää tietojen kopioiminen eri muistipaikkojen välillä.

 

Cache

Nykyaikaisissa tietokoneissa RAM-muisti on paljon hitaampaa kuin rekisterit, joten RAM-muistin käyttö hidastaa ohjelmien toimintaa. Muistin käytön nopeuttamiseksi RAM-muistin ja suorittimen pääosien väliin on usein sijoitettu nopeampi muistityyppi, jota kutsutaan välimuistiksi. Välimuisti on yleensä osa itse suorittimen piiriä, ja se on tavua kohden paljon kalliimpi kuin RAM-muisti. Välimuisti tallentaa samat tiedot kuin RAM-muisti, mutta on yleensä paljon pienempi. Siksi kaikki ohjelman käyttämä data ei välttämättä mahdu välimuistiin. Välimuistiin pyritään tallentamaan tietoa, jota todennäköisesti käytetään paljon. Esimerkkejä ovat äskettäin käytetty data ja data, joka on muistissa lähellä äskettäin käytettyä dataa.

Usein on järkevää käyttää "välimuistia välimuistia varten", aivan kuten on järkevää käyttää välimuistia RAM-muistia varten. Monitasoisessa välimuistissa on useita välimuisteja, joita kutsutaan L1-välimuistiksi, L2-välimuistiksi ja niin edelleen. L1-välimuisti on nopein (ja kallein tavua kohden) ja se on "lähimpänä" prosessoria. L2-välimuisti on askeleen päässä ja hitaampi kuin L1-välimuisti jne. L1-välimuistia voidaan usein pitää L2-välimuistin välimuistina jne.


 

Bussit

Tietokoneväylät ovat johtoja, joita keskusyksikkö käyttää kommunikointiin RAM-muistin ja muiden tietokoneen komponenttien kanssa. Lähes kaikissa suorittimissa on ainakin dataväylä, jota käytetään tietojen lukemiseen ja kirjoittamiseen, ja osoiteväylä, jota käytetään osoitteiden antamiseen. Muut prosessorin sisällä olevat väylät kuljettavat tietoja prosessorin eri osiin.


 

Käskykokonaisuudet

Ohjekokonaisuus (jota kutsutaan myös ISA:ksi - Instruction Set Architecture) on kieli, jota tietty suoritin ymmärtää suoraan. Näitä kieliä kutsutaan myös konekoodiksi tai binäärikieleksi. Ne kertovat, miten käsket suorittimen tehdä erilaisia asioita, kuten ladata dataa muistista rekisteriin tai laskea yhteen kahden rekisterin arvot. Jokaisella käskysarjan käskyllä on koodaus, joka tarkoittaa, miten käsky kirjoitetaan bittijonona.

C:n ja C++:n kaltaisilla ohjelmointikielillä kirjoitettuja ohjelmia ei voi ajaa suoraan suorittimella. Ne on käännettävä konekoodiksi, ennen kuin prosessori voi ajaa niitä. Kääntäjä on tietokoneohjelma, joka tekee tämän käännöksen.

Konekoodi on pelkkä 0:n ja 1:n sarja, minkä vuoksi ihmisten on vaikea lukea sitä. Sen luettavuuden parantamiseksi konekoodiohjelmat kirjoitetaan yleensä assembler-kielellä. Kokoonpanokielessä käytetään tekstiä 0:n ja 1:n sijasta: Voit esimerkiksi kirjoittaa "LD A,0" ladataksesi arvon 0 rekisteriin A. Ohjelmaa, joka kääntää assemblerikielen konekieleksi, kutsutaan assembleriksi.


 

Toiminnallisuus

Seuraavassa on lueteltu joitakin perusasioita, joita suoritin voi tehdä:

  • Lue tietoja muistista ja kirjoita tietoja muistiin.
  • Lisää yksi numero toiseen numeroon.
  • Testaa, onko yksi luku suurempi kuin toinen luku.
  • Siirrä luku paikasta toiseen (esimerkiksi rekisteristä toiseen tai rekisterin ja muistin välillä).
  • Siirry toiseen kohtaan käskyluettelossa, mutta vain jos jokin testi on tosi (esimerkiksi vain jos jokin luku on suurempi kuin toinen).

Jopa hyvin monimutkaisia ohjelmia voidaan tehdä yhdistelemällä monia tällaisia yksinkertaisia ohjeita. Tämä on mahdollista, koska jokaisen käskyn suorittaminen kestää hyvin vähän aikaa. Monet suorittimet pystyvät nykyään suorittamaan yli miljardi (1 000 000 000) ohjetta yhdessä sekunnissa. Yleisesti ottaen mitä enemmän prosessori pystyy tekemään tietyssä ajassa, sitä nopeampi se on. Yksi tapa mitata prosessorin nopeutta on MIPS (Million Instructions Per Second). Flopit (liukulukuoperaatiot sekunnissa) ja suorittimen kellotaajuus (yleensä mitattuna gigahertseinä) ovat myös tapoja mitata, kuinka paljon työtä prosessori pystyy tekemään tietyssä ajassa.

Suoritin on rakennettu logiikkaporteista; siinä ei ole liikkuvia osia. Tietokoneen keskusyksikkö on elektronisesti yhteydessä tietokoneen muihin osiin, kuten näytönohjaimeen tai BIOSiin. Tietokoneohjelma voi ohjata näitä oheislaitteita lukemalla tai kirjoittamalla numeroita tietokoneen muistin erityisiin paikkoihin.


 

Käskyputket

Jokainen suorittimen suorittama käsky suoritetaan yleensä monessa vaiheessa. Esimerkiksi käskyn "INC A" (kasvattaa rekisteriin A tallennettua arvoa yhdellä) suorittaminen yksinkertaisella suorittimella voi tapahtua seuraavasti:

  • Lue käsky muistista,
  • dekoodata käsky (selvittää, mitä käsky tekee) ja
  • lisätään yksi rekisteriin A.

Suorittimen eri osat tekevät näitä eri asioita. Usein on mahdollista suorittaa joitakin eri ohjeiden vaiheita samanaikaisesti, mikä nopeuttaa suorittimen toimintaa. Voimme esimerkiksi lukea käskyn muistista samaan aikaan, kun dekoodaamme toisen käskyn, koska nämä vaiheet käyttävät eri moduuleja. Tätä voidaan ajatella niin, että monta ohjetta on samanaikaisesti "putkessa". Parhaassa tapauksessa kaikki moduulit käsittelevät eri ohjeita samanaikaisesti, mutta tämä ei ole aina mahdollista.


 

Useita ytimiä

Moniydinprosessorit yleistyivät huomattavasti 2000-luvun alussa. Tämä tarkoittaa sitä, että samalle piirille on rakennettu useita prosessoreita, jotta ne voivat suorittaa useita ohjeita kerralla. Joissakin prosessoreissa voi olla jopa kuusikymmentäneljä ydintä, kuten AMD:n tulevassa Epyc "Milan"-sarjassa. Jopa kuluttajille tarkoitetuissa prosessoreissa on monta ydintä, kuten 16-ytimisessä AMD Ryzen 9 5950x -prosessorissa.


 

Multithreading

Joissakin prosessoreissa on monisäikeistystekniikka. Tämä tarkoittaa useamman kuin yhden "säikeen" suorittamista käyttöjärjestelmässä. Monissa nykyaikaisissa prosessoreissa tätä käytetään suorituskyvyn parantamiseen raskaissa monisäikeisissä ohjelmissa, kuten vertailuohjelmissa.


 

Valmistajat

Seuraavat yritykset valmistavat tietokoneiden suorittimia:

  • ARM
  • Intel
  • Advanced Micro Devices
  • MCST
  • SRISA
  • Sun Microsystems

 

Lisätietoja



 

Kysymyksiä ja vastauksia

Q: Mikä on prosessori?


V: CPU (keskusyksikkö) on tärkeä osa jokaista tietokonetta. Se lähettää signaaleja, joilla ohjataan tietokoneen muita osia, melkein samalla tavalla kuin aivot ohjaavat kehoa. Keskusyksikkö on elektroninen kone, joka toimii tiettyjen tehtävien suorittamiseksi annettujen ohjeiden perusteella.

K: Miten CPU toimii?


V: Keskusyksikkö lukee käskiluettelon ja suorittaa (executes) jokaisen käskyn järjestyksessä. Ohjeluettelo, jonka CPU voi suorittaa, on tietokoneohjelma.

K: Millä mitataan suorittimen kellotaajuutta tai nopeutta?


V: Suorittimen sisäisten osien kellotaajuus tai nopeus mitataan hertseinä (Hz). Nykyaikaiset prosessorit toimivat usein niin nopeasti, että sen sijaan käytetään gigahertsiä (GHz) - yksi GHz on 1 000 000 000 sykliä sekunnissa.

K: Mitkä yritykset valmistavat suorittimia?


V: Joitakin suorittimia valmistavia yrityksiä ovat Intel, Advanced Micro Devices (AMD), ARM (jonka Nvidia osti hiljattain), IBM ja AMD ATI Technologies, joka on tällä hetkellä markkinajohtaja.

K: Missä käytetään eniten suorittimia?


V: Useimmat pöytätietokoneissa käytettävät suorittimet ovat joko Intelin tai AMD:n valmistamia mikroprosessoreita, kun taas useimpia muita käytetään sulautetuissa järjestelmissä, joita käytetään erikoistuneemmissa laitteissa, kuten matkapuhelimissa, autoissa, videopelikonsoleissa tai sotilassovelluksissa.


Etsiä
AlegsaOnline.com - 2020 / 2025 - License CC3