Suoritin
Suoritin on tietokoneen emolevyyn kiinnitetty komponentti ja tietojenkäsittelyn perusta.[1] Se hallinnoi tietokoneessa kaikkia laitteiston ja ohjelmiston toimintoja.
Suorittimen tyyppi ja nopeus ovat tietokonejärjestelmän vaikuttavimmat tekijät järjestelmän kokonaistehokkuuteen.
Merkittävimmät suoritinvalmistajat ovat Intel ja AMD, joilta tulee nykyisin uusia suoritinmalleja kuukausien sisällä. Aiemmin uusia suorittimia tuli useampien vuosien välein. [2]
Suorittimien nopeus on kasvanut kehityksen myötä eksponentiaalisesti ja on nykyisin ensimmäisiin suorittimiin verrattuna monimiljoonakertainen. [3]
Suorittimien kehittymisellä on ollut selkeä vaikutus yhteiskuntaan. Se on muuttanut tapaamme suunnitella asioita, tehdä työtä ja välittää tietoa. Sillä on ollut suuri vaikutus tieteen edistykseen varsinkin simulaatioiden eli erilaisten mallinnusten avulla. Suorittimen laskentanopeuden kasvaessa saamme toteutettua yhä tarkempia ja reaaliaikaisempia malleja, esimerkiksi ilmaston ja biologisten järjestelmien toiminnasta.
Suorittimen nopeuden kasvaessa olemme voineet toteuttaa nopeampia tietoverkkoja, mikä mahdollistaa jatkuvasti monimutkaisemman tiedon reaaliaikaisen välittämisen.[4]
Historia
muokkaaSuorittimien historia juontaa juurensa 1940-luvulle, jolloin toinen maailmansota kiihdytti teknologian kehitystä. Ensimmäiset tietokoneet olivat suuria koneita, joiden toiminta pohjautui elektroniputkilla digitaaliseen tiedon käsittelyyn. Prosessorien kehitys kulki pitkän aikaa käsi kädessä ensimmäisten tietokoneiden kehittymisen kanssa, koska pääsääntöinen tiedon käsittely tapahtui prosessorissa.
Ensimmäisenä elektronisena tietokoneena voidaan pitää Yhdysvalloissa vuonna 1945 valmistunutta ENIAC-tietokonetta. Tämän tietokoneen kehitti Yhdysvaltain armeija saadakseen laskettua tykistön ballistisia lentoratoja. ENIAC-konetta oli kehittämässä John von Neumann, jota voidaan pitää yhtenä tietokoneen isänä. Hän osallistui Yhdysvaltojen Manhattan-projektiin, jonka tavoitteena oli luoda ydinpommi, ja tämän myötä päätyi kehittelemään ENIAC-konetta. [5]
ENIAC-projektin jälkeen von Neumann työryhmineen kehitti von Neumannin arkkitehtuuri –nimeä kantavan tietokonearkkitehtuurin pohjalta IAS-koneen. IAS-koneen rakentaminen aloitettiin vuonna 1946 ja se saatiin valmiiksi vuonna 1951. Von Neumannin arkkitehtuurin mukainen tietokone koostuu suorittimesta, johon sisältyy aritmeettis-looginen yksikkö, ohjausyksikkö ja rekisterit, väylistä ja muistista sekä input/output-laitteista. Nämä kolme komponenttia muodostivat pohjan tietokoneiden kehitykselle ja nykypäivän koneiden arkkitehtuuri pohjautuukin vahvasti von Neumannin arkkitehtuurille. Ensimmäiset tietokoneet olivat massiivisen kokoisia, joiden komponentit paljon yksinkertaisempia ja yhtenäisempiä keskenään, kuin nykypäivänä. Ensimmäiset koneet soveltuivat lähinnä siihen tiettyyn tehtävään, johon ne olivat luotu.[6][7]
Tietokoneet kehittyivät kylmän sodan kilpavarustelun myötä kovaa vauhtia. Elektroniputket alkoivat olla vanhentunutta teknologiaa, ja 1950-luvun loppupuolella tulivat ensimmäiset transistoreihin pohjautuvat tietokoneet. Transistorit ovat pienempiä, halvempia ja eivätkä olleet niin kuumia kuin elektroniputket. Ennen kaikkea transistorien pienuus loi pohjaa tulevalle kehitykselle, jolloin mikroprosessorit kehitettiin. Transistoreiden ohella tietokoneiden prosessoreista saatiin entistä tehokkaampia. Esimerkiksi aritmeettis-looginen yksikkö ja ohjausyksikkö pystyttiin luomaan monimutkaisemmiksi kuin aikaisemmin, jolloin suoritinta voitiin hyödyntää aikaisempaa vaativimmissa tehtävissä ja niiden nopeus kasvoi.[8]
Seuraavalle vuosikymmenelle eli 1960-luvulle tultaessa syntyi muun muassa CISC-suoritinarkkitehtuuri ja ensimmäiset mikropiirit. Mikropiirit mullistivat tietotekniikan kehityksen, joka viimeistään koki läpimurron vuonna 1971, kun ensimmäinen mikroprosessori valmistui. Tämä suoritin oli 4-bittinen Intel 4004 mikroprosessori, joka koostui 2300 transistorista. Intel 4004 oli suorittimien kehityksessä kenties yksi suurimmista mullistuksista. Seuraava suuri askel suorittimien kehityksessä tapahtui jo vuonna 1972, kun Intel julkaisi 8-bittisen 8008 mikroprosessorinsa. Intel 8008 oli kaksinkertaistanut bittimääränsä ja oli lähes kaksi kertaa monimutkaisempi kuin edeltäjänsä. Tästä kehityksestä voidaan jo havaita Mooren lain piirteitä, jonka mukaan transistoreiden määrä mikropiireissä kaksinkertaistuu mikropiireissä suunnilleen vuoden välein. Tästä eteenpäin suorittimet jatkoivat kehityskulkuaan tasaiseen tahtiin - suorittimien teho kasvoi ja koko jatkoi pienenemistään. Nykypäivään tultaessa suoritinarkkitehtuureihin on tullut moniytimisyys, jolloin suorittimissa voi olla jopa kymmenen eri ydintä. Merkittäviä virstanpylväitä suorittimien historiassa on RISC-suoritinarkkkitehtuuri, ARM-suorittimet ja x86-suoritinperhe. [9]
Von Neumann - arkkitehtuuri
muokkaaVon Neumann - arkkitehtuuri on John von Neumannin ja hänen työryhmänsä 1940-luvulla kehittämä tietokonearkkitehtuuri.
Arkkitehtuurin ominaisuudet perustuvat siihen, että data ja sitä käyttävät ohjelmat varastoidaan samaan muistiin. Data ja käskyt liikkuvat yhteisiä väyliä pitkin prosessorin ja muistin välillä. [10]
Von Neumann - arkkitehtuurin komponentteina ovat: [1]
- Suoritin, joka sisältää kolme osaa: aritmeettisloogisen yksikön, ohjausyksikön ja rekisterit.
- Väylät ja muisti
- Input/Output-laitteet(I/O-laitteet)
Mooren laki
muokkaaMooren laki on Gorden E. Mooren vuonna 1965 tekemä havainto siitä, että transistoreitten määrä mikropiireissä tuplaantuisi aina vuoden välein seuraavan vuosikymmenen aikana. Vuonna 1975 Moore havaitsi, että integroiduissa piireissä olevien transistorien määrä neliötuumaa kohti oli kaksinkertaistunut, joten hän muutti lain tuplaantumaan kahden vuoden välein. [11]
Nykyisen määritelmän mukaan tuplaantuminen tapahtuisi 18 kuukauden välein. Vuonna 2016 monet asiantuntijat arvioivat, että Mooren laki tulisi päättymään 10 vuoden kuluessa, koska integroiduista piireistä ei saataisi pienempiä, kun transistorit alkavat lähestyä atomin kokoa. [12]
Rakenne
muokkaaOhjelman ohjausyksikkö
muokkaaOhjausyksikkö ohjaa datan siirtoa suorittimelle ja suorittimelta pois. Se myös hallitsee ALU:n eli aritmeettis-/loogisen yksikön toimintaa. Eli käytännössä ohjausyksikkö kertoo mitä tehdä ja milloin. Ohjausyksikkö säätelee datan siirtoa lähettämällä konekielisiä käskyjä. Käsky sisältää operaatiokoodin ja operandin. Operaatiokoodissa on ohje tehtävästä, esimerkiksi tallennuksesta. Operandissa on ohjeet käytettävistä rekistereistä ja muistipaikoista. [13]
Ohjausyksikkö suorittaa käskyt yksi kerrallaan. Dataa noudetaan suoritettavia toimintoja varten rekistereihin, jotka kuuluvat ohjausyksikköön. Näitä rekistereitä ovat: Käskyrekisteri (IR, instruction register), muistiosoiterekister(MAR, memory address register) ja ohjelmalaskuri(PC, program counter) ja käskypuskurirekisteri (IBR, istruction buffer register). Jokaisella rekisterillä on oma tehtävänsä. Esimerkiksi muistiosoiterekisterissä on muistiosoitepaikkaan viittaava bittijono ja käskyrekisterissä on operaatiokoodi. [14]
Aritmeettis-looginen yksikkö
muokkaaAritmeettis-looginen yksikkö (ALU) on se osa tietokoneesta, joka suorittaa aritmeettisia ja loogisia operaatioita tietokoneessa. Eli laskutoimituksia, pyöristyksiä ja Boolen logiikkaa. Muut yksiköt periaatteessa liittyvät tiedon siirtoon Aritmeettis-/loogiseen yksikköön ja sieltä pois. Tosin ohjausyksikkö antaa ALU:lle käskyn/ohjeen suoritettavasta toiminnosta, esimerkiksi käskee kahden muistipaikan yhteenlaskun.[15] Tieto, joka käsitellään ALU:ssa, haetaan ensin keskusmuistista rekistereihin, jotka ovat pieni määrä nopeaa muistia lähellä prosessoria, tai prosessoriin liitettynä. Lisäksi operaatioiden tulokset sijoitetaan väliaikaisesti rekistereihin, ennen sijoittamista muistiin.[16]
ALU käsittelee vain bittijonoja. Käytännössä ALU käsittelee syötteistä kaikki mahdolliset operaatiot, joihin se kykenee. Jokaiselle operaatiolle on ALU:ssa oma multiplekseri. Ohjausyksikön käskyn mukaisesti valitaan sen operaation tulos, joka on haluttu.[15]
Yleisesti ALU käsittelee lukuja(bittijonoja), joko kokonaislukuina tai liukulukuina. ALU:ssa on komplementoija, joka huolehtii bittijonojen muokkauksesta tarvittavaan muotoon. [14] Operaatioiden suorittamiseen varataan oikea määrä muistia rekisteristä, mistä huolehtii ohjausyksikkö. Lisäksi rekisteihin lukeutuu vielä lippurekisterit, jotka ovat yhden bitin kokoisia. Ne ilmoittavat laskutoimitusten ylivuodoista tai muista tämäntyyppisistä merkitsemisistä.[14] ALU:n ja rekistereiden välinen tiedonsiirto tapahtuu sisäisen CPU-väylän välityksellä.[16]
Rekisterit
muokkaaRekisterit ovat suorittimen sisäistä muistia. Rekisterit ovat tietokoneen muistityypeistä pienimpiä, nopeimpia ja kalleimpia. Suoritintyypistä riippuen rekistereitä voi olla muutamista kymmenistä aina satoihin. [15]
Seuraavaksi on lueteltu yleisimpiä rekisterityyppejä.
Yleisrekisterit
- Akkumulaattori (AX) on yleisrekisteri, jota käytetään aritmeettisloogisten operaatioiden suoritukseen ja niiden tulosten säilytykseen.
- Tietorekisteriä (DX) käytetään kerto- ja jakolaskujen puskurina. Se säilyttää näiden operaatioiden väliarvot.
- Perusrekisteri (BX) voi suorittaa aritmeettisia operaatioita ja säilyttää muistiosoitteita, jotka osoittavat toiseen muuttujaan. Yleensä se sisältääkin osoittimen muistiosoitteeseen.
- Laskurirekisteriä (CX) käytetään laskurina toistorakenteita varten.[17]
Erikoisrekisterit
- Ohjelmalaskuri (PC) sisältää seuraavaksi toteutettavan käskyn muistioisoitteen. Kun jokainen käsky on käsitelty sovellus päivittää ohjelmalaskurin tulevien tehtävien osoitteilla. Ohjelmalaskurin avulla tehtäviä voidaan suorittaa nopeammin ja tehtävän nykyistä suorituspistettä voidaan seurata.[18]
- Käskyrekisteri (IR) sisältää suoritettavana olevan käskyn koodin, joka haetaan keskusmuistista.[19]
- Muistiosoiterekisteri (MAR) tallentaa fyysisen muistiosoitteen, jonne seuraava data kirjoitetaan tai muistiosoitteen, jossa seuraava käsky sijaitsee.[20]
- Muistipuskurirekisteri (MBR) tallentaa välittömään muistiin siirrettävän datan ja sieltä siirtyvän datan. MBR sisältää kopion muistiosoiterekisterin määrittelemistä muistin sijainneista. MBR toimii myös puskurina sallimalla prosessorin ja muistiyksiköiden itsenäisen toiminnan ilman pienten erojen vaikutusta operaatiossa. Dataosio kopioidaan muistipuskurirekisteriin valmiiksi käyttöä varten seuraavassa kellosyklissä, jolloin sitä voidaan käyttää joko prosessorin lukemiseen tai prosessorin kirjoittamiseen tai se voidaan tallentaa päämuistiin kirjoittamisen jälkeen.[21]
Välimuisti
muokkaaVälimuisti on nopeaa sram-tyyppistä muistia ja sitä käytetään nopeuttamaan suorittimen ja keskusmuistin välistä tiedonsiirtoa. Välimuisteja voi olla moniydinsuorittimessa useammalla tasolla. Esim. ensimmäisellä tasolla kullekin ytimelle oma välimuisti, toisella tasolla kahden ytimen yhteiset välimuistit ja kolmannella tasolla kaikille ytimille yhteinen välimuisti. [15]
Välimuistiin tuodaan keskusmuistista lohko kerrallaan. Yksi lohko täyttää välimuistista yhden rivin, jota suoritin käsittelee. [22]
Väylät
muokkaaVäyliä käytetään tietokoneen sisäisten komponenttien väliseen kommunikointiin. Esimerkiksi prosessorilta muistiin, muistista prosessoriin, I/O-laitteelta prosessoriin, prosessorilta I/O -laitteelle. Väylät voidaan jakaa data-, osoite- ja ohjausväyliin. Dataväylät sisältävät tietyn bittimäärän kokoisia käskyjä. Osoiteväyliä käytetään kertomaan datan sijainnin, ja tiedon siitä minne se siirretään. Ohjausväylät taas huolehtivat data- ja osoiteväylien toiminnasta.[1]
I/O-laitteet
muokkaaProsessori kommunikoi I/O-laitteiden kanssa I/O-moduulin avulla. I/O- moduulia tarvitaan, koska oheislaitteden tiedonsiirto on hitaampaa kuin prosessorin, ja oheislaitteet voivat siirtää dataa eri muodossa.
Prosessorin ja I/O- moduulin välisessä tiedonsiirrossa prosessori tarkistaa ensin oheislaitteen tilan moduulilta, jonka jälkeen moduuli palauttaa laitteen tilan prosessorille. Jos tila on valmis prosessori pyytää dataa moduulilta. Lopuksi moduuli saa datan laitteelta ja lähettää sen prosessorille.
Oheislaitteet jaetaan ihmislukuisiin-, konelukuisiin-, ja kommunikaatiolaitteisiin. Ihmislukuinen laite tarkoittaa sitä, että käyttäjä voi kommunikoida laitteen kanssa(Hiiri, Näppäimistö). Konelukuinen taas sitä, että tietokone voi kommunikoida laitteen kanssa(Kovalevy). Kommunikaatiolaitteet ovat ulkoisia laitteita jotka voivat kommunikoida koneen kanssa(Modeemit).[23]
Moniydinsuoritin
muokkaaMoniydinsuorittimet otettiin käyttöön henkilökohtaisissa tietokoneissa 1990-luvun lopulla. Syynä ytimien lisäämiseen on, että suorittimien kellotaajuutta ei voida enää juurikaan nostaa fyysisten rajoitteiden, kuten ylikuumenemisen vuoksi. Käyttämällä useita ytimiä yhdellä suoritinpiirillä, saadaan suorittimen tiedonkäsittelykapasiteetti moninkertaistettua.
Ensimmäiset moniydinsuorittimet olivat 2-ytimisiä. Nykyisin suorittimen piirillä voi olla ytimiä jopa 10 tai enemmän. Ydinten fyysisen lisäämisen lisäksi, Intel käyttää Hyper-Threading teknologiaa, joka virtuaalisesti kaksinkertaistaa käyttöjärjestelmän havaitsemien ytimien määrän.[24]
Toiminta
muokkaaTallennetun ohjelman periaate
muokkaaTallennetun ohjelman periaatteella tarkoitetaan erilaisten ohjeiden tallentamista tietokoneen muistiin, mikä mahdollistaa useiden tehtävien suorittamista peräkkäin tai ajoittain. Kyseinen periaate otettiin käyttöön John von Neumannin toimesta, kun hän ehdotti, että ohjelma tallennettaisiin sähköisesti binäärimuotoon muistilaitteessa, jotta tietokone voisi muuttaa ohjeita välikäsittelyn tulosten perusteella. [25]
Tallennetun ohjelman periaate toimii seuraavasti: [1]
- Ohjelman käskyt ja data säilytetään tietokoneen muistissa.
- Tietokone suorittaa käskyt yksi kerrallaan
- Tietokone toimii binäärisesti luvuilla 0 ja 1.
Kellopulssi
muokkaaSuorittimen toimintaa ohjaa sisäinen kello. Suorittimen kellotaajuus kertoo, kuinka monta kertaa sekunnissa kello antaa sähkövirtapulssin, joka toteuttaa suorittimen sen hetkisestä tilasta riippuvan toiminnon. Jos suorittimen kellotaajuus on esim. 2 gigahertsiä, tulee kellopulssi 2 miljardia kertaa sekunnissa. [26]
Käskysykli
muokkaaSuorittimen käskysykli noudattaa seuraavaa järjestystä:
- Ohjelmalaskuri laskee seuraavan osoitteen
- Käskyrekisteri noutaa käskyn ohjelmalaskurin antamasta osoitteesta
- Noudetaan tiedöt rekisteristä tai keskusmuistista aritmeettis-loogiselle yksikölle (ALU, arithmetic-logic unit)
- ALU suorittaa laskutoimituksen
- Tieto siirrään ALUlta rekisteriin tai keskusmuistiin
Nämä toiminnot toteutetaan suorittimen kellopulssin ohjaamana. [15]
CISC ja RISC arkkitehtuurit
muokkaaCISC (Complex Instruction Set Computer) ja RISC (Reduced Instruction Set Computer) ovat pääasialliset käytössä olevat suoritinarkkitehtuurimallit.
CISC-arkkitehtuurissa pyritään vähentämään suorittimen tarvitsemien komentojen määrää laajentamalla konekielisten komentojen valikoimaa. Tämän arkkitehtuurin konekieliset komennot ovat monimutkaisempia ja voivat sisältää useampia suorittimen alkeistoimintoja. Näin ollen yhden käskyn toteuttaminen voi vaatia useamman kellosyklin.
RISC-arkkitehtuurissa taasen pyritään suorituskyvyn nostamiseen vähentämällä käskyn suorittamiseen tarvittavien kellopulssien määrää. Käskyt ovat yksinkertaisia ja niitä on vähäinen määrä. RISC-arkkitehtuurissa tehtävien suoritus vaatii useita käskyjä. Ja yhden käskyn suoritus vaatii yleensä vain yhden kellosyklin. Tämän ansiosta on mahdollista käyttää kanavointia(pipelining) aloittamaan uuden käskyn suoritus ennen edellisen valmistumista.
RISC-arkkitehtuuri on CISC-arkkitehtuuria tehokkaampi. Ongelmana RISC-arkkitehtuurin käytölle kuitenkin on, että sille on vaikea toteuttaa korkeamman tason ohjelmointikielen kääntäjiä tai konekielisiä ohjelmia.
Intelin x86-suoritinarkkitehtuuri luokitellaan CISC-arkkitehtuuriin, mutta käytännössä se on CISC- ja RISC- arkkitehtuurien hybridi. [27]
Katso myös
muokkaaSymmetriset moniprosessorit (SMP:t)
Lähteet
muokkaa- ↑ 1,0 1,1 1,2 1,3 Itä-Suomen yliopiston tietokonejärjestelmät 2018 kurssin luentovideo : Tietokoneen toiminta, keskusyksikkö ja tietokonelaitteet. Materiaali Miia-Maarit Saarelainen, luennoitsija Jussi Parkkinen.
- ↑ What is a Processor? Scottish Qualifications Authority https://www.sqa.org.uk/e-learning/FirstLine01CD/page_05.htm
- ↑ Moore’s Law http://www.umsl.edu/~siegelj/information_theory/projects/Bajramovic/www.umsl.edu/_abdcf/Cs4890/link1.html
- ↑ The computer revolution: how it's changed our world over 60 years https://www.weforum.org/agenda/2016/06/the-computer-revolution-how-its-changed-our-world-over-60-years
- ↑ The History of the ENIAC Computer. John Mauchly and John Presper Eckert https://www.thoughtco.com/history-of-the-eniac-computer-1991601
- ↑ IAS Computer. The National Museum of American History http://americanhistory.si.edu/collections/search/object/nmah_334741
- ↑ Stallings, W, 2016. Computer organization and architecture designing for performance, s.11-12.
- ↑ Stallings, W, 2016. Computer organization and architecture designing for performance, s. 17-18.
- ↑ Stallings, W, 2016. Computer organization and architecture designing for performance, s.25, 28-39.
- ↑ Mehdi Zargham: Computer architecture (2. kappale) http://www2.cs.siu.edu/~cs401/Textbook/ch2.pdf
- ↑ Moore's law. Encyclopedia Britannica https://www.britannica.com/technology/Moores-law
- ↑ Moore's Law. Investopedia. https://www.investopedia.com/terms/m/mooreslaw.asp
- ↑ Computer Science: An Overview, Global Edition | Brookshear, J. Glenn; Brylow, Dennis; Manasa S.|Twelfth edition, Global edition. Boston, N.J. : Pearson.2015
- ↑ 14,0 14,1 14,2 Stalligs, W, 2010;8. Computer organization and architecture designing for performance|https://inspirit.net.in/books/academic/Computer%20Organisation%20and%20Architecture%208e%20by%20William%20Stallings.pdf
- ↑ 15,0 15,1 15,2 15,3 15,4 Itä-Suomen yliopiston tietokonejärjestelmät kurssin luentovideo : Prosessorin käskysykli, muistityypit, välimuisti. Materiaali Miia-Maarit Saarelainen, luennoitsija Jussi Parkkinen.
- ↑ 16,0 16,1 Itä-Suomen yliopiston tietokonejärjestelmät kurssin luentovideo Kuinka tietokone toimii. Materiaali Miia-Maarit Saarelainen, luennoitsija Jussi Parkkinen.
- ↑ What is register? Explain the types of registers? https://www.quora.com/What-is-register-Explain-the-types-of-registers
- ↑ Program Counter (PC). https://www.techopedia.com/definition/13114/program-counter-pc
- ↑ CPU Special Registers. Scottish Qualifications Authority. https://www.sqa.org.uk/e-learning/CompArch03CD/page_02.htm
- ↑ What Is Memory Address Register MAR? It Still Works.https://itstillworks.com/memory-address-register-mar-7258773.html
- ↑ Memory buffer register. Revolvy. https://www.revolvy.com/page/Memory-buffer-register
- ↑ Itä-Suomen yliopiston tietokonejärjestelmät-kurssin luentovideo: Välimuistin ja päämuistin rakenne, liukuhihnoitus ja superskalaari. Materiaali Miia-Maarit Saarelainen, luennoitsija Jussi Parkkinen.
- ↑ Itä-Suomen yliopiston tietokonejärjestelmät-kurssin luentomoniste: I/O - syöttö- ja tulostusjärjestelmät. Materiaali Miia-Maarit Saarelainen, luennoitsija Jussi Parkkinen.
- ↑ Multiple Core Processors: Is More Always Better? Lifewire. https://www.lifewire.com/multiple-core-processors-832453
- ↑ Stored-program concept. Encyclopedia Britannica. https://www.britannica.com/technology/stored-program-concept
- ↑ Prosessoriarkkitehtuurista, konekielestä ja ohjelman suorituksesta http://users.jyu.fi/~nieminen/kj07kesa/prosessorista.html#prosessorin-toimenpiteet
- ↑ What are CISC and RISC technologies, and how do they compare? Indiana University Knowledge Base https://kb.iu.edu/d/abig