Uusimmat

Mikroprosessori – historia ja toiminta (osa 1)

06.05.2011 21:06 Muropaketin toimitus

Tutustumme Muropaketin kaksiosaisessa artikkelisarjassa mikroprosessoriin, joka on tietokoneen tärkein osa ja sitä kutsutaan myös keskusyksiköksi tai suorittimeksi (CPU, Central Processing Unit). Sen tehtävä on yksinkertaistettuna lukea keskusmuistiin tallennettua ohjelmaa ja suorittaa ohjelmassa määrätyt toimenpiteet. Suurimman osan ajasta mikroprosessori lukee tietoa keskusmuistista, joka on suoritettavan ohjelman lukua. Lisäksi mikroprosessori lukee tietoa liitäntäpiireistä sekä kirjoittaa sitä muistiin ja liitäntäpiireihin. Tämä johtuu vastaavasti niistä toimenpiteistä, jotka muistiin tallennetussa ohjelmassa on käsketty suorittaa. Mikroprosessori suorittaa kaikki aritmeettis-loogiset toimenpiteet, kuten laskutoimitukset ja lukujen vertailut.

Artikkelin ensimmäisessä osassa käydään läpi mikroprosessorin historia, x86-arkkitehtuurin kehittyminen, Mooren laki sekä käsitellään mikroprosessorin suorituskykyyn liittyvät tekjät. Myöhemmin julkaistavassa toisessa osassa esitellään nykyaikaisen mikroprosessorin suunnittelun ja valmistuksen vaiheet hiekasta piisiruksi.

 

Maailman ensimmäinen integroitu puolijohdepiiri

Jack Kilby kehitti vuonna 1958 germaniumkiteeseen perustuneen integroidun piirin (kuvassa), johon hän oli liittänyt viisi komponenttia ja liimannut ne lasipalaselle. Kun Kilby liitti luomuksensa oskilloskooppiin ja painoi nappia, seurauksena oli päättymätön sinikäyrä oskilloskoopin näytöllä. Kilby oli kehittänyt maailman ensimmäisen toimivan integroidun puolijohdepiirin ja patentoi sen nimiinsä seuraavana vuonna. Vuonna 2000 Kilby palkittiin keksinnöstään fysiikan Nobelin palkinnolla.

 

Mikroprosessorin varhaishistoria

Yksi maailman ensimmäisistä kaupallisista mikroprosessoreista oli Intelin 15. marraskuuta 1971 julkaisema, yrityksen insinööri Federico Fagginin kehittämä yhden piirin nelibittinen Intel 4004 (kuvassa). Samaan aikaan 1970-luvun alussa myös Texas Instruments kehitti omaa nelibittistä TMS 1000 -mikroprosessoriaan, mutta se tuli aluksi markkinoille ainoastaan yrityksen omissa taskulaskinmalleissa.

Garrett AiResearch suunnitteli ja kehitti vuosina 1968-1970 useamman piirin The Central Air Data Computer -järjestelmää (CADC), jota käytettiin Yhdysvaltojen merivoimien F-14 Tomcat hävittäjälentokoneen lennonohjauksessa. CADC:n suunnitteluryhmän jäsen Ray Holt yritti julkaista piirisarjan suunnitelmat Computer Design -lehdessä, mutta merivoimat kielsivät paperin julkaisun kansalliseen salaisuuteen vedoten.

Intel jatkoi kaupallisten mikroprosessoreiden kehitystä heti seuraavana vuonna lanseeraamalla kahdeksanbittisen 8008-mallin ja jatkoi parantamalla suorituskykyä ja ominaisuuksia edelleen 8080- ja 8085-malleilla. 1970-luvun puolivälissä mikroprosessorimarkkinoille pyrkivät myös muun muassa RCA, International Business Machines (IBM), Motorola, Advanced Micro Devices (AMD) ja Fairchild. Motorolan julkaistua vuonna 1975 Moto 6800 -piirin, suunnittelutiimi erosi ja perusti oman MOS Technology -yrityksen.

Yritys suunnitteli pikaisesti MOS 6502 -mikroprosessorin ja myi sitä 25 dollarin hinnalla, kun Intelin 8080- ja Motorolan 6800-mikrorprosessoreiden hinta oli 179 dollaria. Aggressiivinen hinnoittelu pakotti Intelin ja Motorolan laskemaan piiriensä hinnan 79 dollariin, mutta MOS 6502 -mikroprosessori sai sen myötä uskottavuutta ja on käytössä esimerkiksi Apple II- sekä useissa Commodore- ja Atari-tietokoneissa. AMD:n alkuperäinen bisnesidea ei ollut luoda omia tuotteita, vaan valmistaa olemassa olevia tuotteita lisenssien alaisuudessa ja vuonna 1975 se alkoi myydä klooneja Intelin 8080-mikroprosessorista.

16-bittisiä mikroprosessoreita oli vuonna 1975 julkaisemassa Digital Equipment Corporation (DEC) ja Fairchild Semiconductor, joiden ratkaisut koostuivat kuitenkin useammasta piiristä. Vuonna 1976 Texas Instruments julkaisi ensimmäisen 16-bittisen yhden piirin TMS 9900 -mikroprosessorin. Vuonna 1978 Intel pyrki jättämään kilpailijat taakseen siirtymällä 16-bittiseen prosessoriin julkistamalla x86-arkkitehtuuriin perustuvan 8086-mallin, jolloin kaikki muut mikrotietokoneen komponentit, kuten muistit ja liitäntäpiirit olivat kuitenkin vielä kahdeksanbittisiä. Siksi Intel julkaisi seuraavana vuonna 8088-prosessorin, joka oli sisäisesti 16-bittinen, mutta sen ulkoinen tietoväylä on 8-bittinen.

8086 on hieman nopeampi, sillä se pystyy hakemaan 16-bittisen tiedon yhdellä kellojaksolla, kun 8088-prosessorilta siihen kuluu kaksi kellojaksoa. Molempien prosessoreiden osoiteväylä on 20-bittinen, joten niiden muistiavaruus on yhden megatavun suuruinen. Inteliltä eronnut Frederico Faggin suunnitteli ja julkaisi vuonna 1976 kahdeksanbittisen Zilog Z-80 -mikroprosessorin ja vuonna 1979 16-bittisen Z8000-mallin, jotka tulivat suosituiksi muistirajapintansa ansiosta. Prosessorin tuottamat muistin virkistyssignaalit tarjosivat alhaisemmat järjestelmän kustannukset ja helpottivat suunnittelua.

Mikroprosessoreiden historiasta löytyy lisää tietoa ja yksityiskohtia esimerkiksi IBM:n kotisivujen teknisestä kirjastosta.

 

X86-prosessoreiden aikakausi

X86-mikroprosessoreiden varsinainen menestystarina alkoi vuonna 1981, kun IBM julkaisi ensimmäisen Intelin 8088-mikroprosessoriin perustuvan mikrotietokoneen (PC, Personal Computer). Vielä nykyisinkin PC:ksi kutsutaan tietokoneita, joissa käytetään x86-arkkitehtuuriin perustuvaa mikroprosessoria. Yhteisiä piirteitä x86-arkkitehtuurin mukaisissa prosessoreissa ovat peruskäskykanta, rekisterit ja segmentoitu muistiarkkitehtuuri. Suunnittelussa on ollut pääperiaatteena, että vanhemman sukupolven prosessorille kirjoitetut ohjelmat toimivat uudemmissakin prosessoreissa sellaisenaan.

Ensimmäisessä PC:ssä oli vain 64 kilotavun keskusmuisti ja 5,25 tuuman levykeasema, jonka kapasiteetti oli 360 kilotavua. Kaksi vuotta myöhemmin julkaistuun päivitettyyn malliin oli lisätty 10 megatavun tallennuskapasiteetillinen kiintolevy. PC-mikrot ovat kehittyneet 30 vuodessa huimaa tahtia ja nykypäivän työpöytätietokoneissa keskusmuistia voi olla käytössä esimerkiksi 12 gigatavua ja kiintolevyjen koot mitataan teratavuissa. PC-tietokoneissa mikroprosessorit perustuvat edelleen x86-arkkitehtuuriin, mutta ne sisältävät suuren joukon uusia prosessorin toimintaa tehostavia ohjelmakäskyjä ja ominaisuuksia.

Kaksi suuremman luokan uudistusta x86-arkkitehtuuriin ovat olleet vuonna 1985 lanseerattujen Intel386-prosessoreiden myötä esitellyt 32-bittiset rekisterit sekä AMD:n vuonna 2000 lanseeraama x86-64-laajennus, joka toi mukanaan tuen 64-bittisille rekistereille. X86-64-laajennus nimettiin myöhemmin markkinointia varten AMD 64:ksi. Intel kehitti aluksi yhteistyössä Hewlett-Packardin kanssa omaa 64-bittistä IA-64-arkkitehtuuriaan, joka ei kuitenkaan ollut yhteensopiva 32-bittisen x86-arkkitehtuurin kanssa. IA-64-arkkitehtuuri on nykyisin käytössä Intelin Itanium-mikroprosessoreissa, mutta työpöytämikroprosessoreihin Intel lisensoi lopulta itselleen AMD:lta 64-bittisen laajennuksen, jota se kutsuu omissa prosessoreissaan Intel 64 -ominaisuudeksi.

Pienempiä uudistuksia x86-arkkitehtuuriin on nähty vuosien varrella useampia. Ensimmäinen uudistus oli Intelin vuonna 1982 julkaiseman 80286-mikroprosessorin yhteydessä esitelty suojattu tila, jonka 24-bittinen segmentin kantaosoite deskriptorilta eli datatietueelta mahdollistaa keskusmuistin maksimikooksi 16 megatavua, tuen virtuaalimuistin hallinnalle ja tarjoaa suojatun muistin, joka estää ohjelmia korruptoimasta toisiaan. 386 oli yrityksen ensimmäinen 32-bittinen mikroprosessori, jonka myötä muistiavaruus kasvoi neljään gigatavuun, eikä segmentointia enää tarvinnut välttämättä käyttää. Tämä helpotti suurten ohjelmien ja modernien käyttöjärjestelmien kehittämistä merkittävästi. Intel486-mallin myötä matematiikkasuoritin integroitiin samaan piiriin perussuorittimen kanssa ja viisivaiheisen liukuhihnansa ansiosta se pystyi aloittamaan uusien käskyjen suorittamisen selvästi useammin kuin Intel386, jossa käskyjen välillä tarvittiin aina useampi kellojakso.

Vuonna 1993 Intel otti prosessorimalleissaan käyttöön Pentium-tuotemerkin ja unohti aiemmat numerosarjat. Pentiumien suurin uudistus oli toisen liukuhihnan lisääminen, minkä ansiosta u- ja v-liukuhihnat pystyivät yhdessä suorittamaan kaksi käskyä kellojaksossa. Pentiumien kehitys jatkui aina vuoteen 2004 asti ja uusissa malleissa esiteltiin uusia suorituskykyä parantavia käskykantoja, korkeampia kellotaajuuksia, suurempia välimuisteja ja optimointeja liukuhihnaan. Lopulta Intel keskeytti korkeampaan kellotaajuuteen perustuvan suunnitteluperiaatteen ja siihen perustuneen Netburst-arkkitehtuurin, sillä viimeisten Pentium 4 -mallien lämmöntuotto nousi yli 3,5 gigahertsin kellotaajuudella 115 wattiin ja samaan aikaan suorituskyky ei enää pärjännyt AMD:n kilpaileville malleille. Ensimmäiset 64-bittiset työpöytämikroprosessorit julkaisi markkinoille AMD vuonna 2003, kun se esitteli Athlon 64 -malliset mikroprosessorit. Niiden muistiavaruus kasvoi AMD 64 -laajennuksen ansiosta 32-bittisten prosessoreiden neljän gigatavun maksimista 16 teratavuun.

Vuodesta 2005 eteenpäin mikroprosessorivalmistajat ovat keskittyneet yhden ytimen mahdollisimman korkean kellotaajuuden ja suorituskyvyn sijaan lisäämään ytimiä suorittamaan tehtäviä rinnakkain, parantamaan suorituskykyä kellojaksoa kohti ja optimoimaan mikroprosessorin tehonkulutusta energiaystävällisempään suuntaan. Käyttöjärjestelmien ja ohjelmistojen kehittyessä tukemaan useampaa kuin yhtä säiettä, myös mikroprosessorin on kyettävä suorittamaan yhtäaikaisesti useampaa tehtävää.

 

 

Mooren laki

1960-luvun puolivälissä Fairchild Semiconductorin tutkimus- ja kehityslaboratorion johtaja Gordon Moore teki Electoronics-lehden 35-vuotisjuhlanumeroon kirjoittamassaan artikkelissaan ennustuksen, että komponenttien määrä kaksinkertaistuisi integroiduissa piireissä joka vuosi seuraavan kymmenen vuoden ajan. Mooren ennustus osoittautui lähes paikkaansa pitäväksi ja sitä sovellettiin myös useisiin muihin puolijohdeteollisuuden kehitysennustuksiin. Mooren ennustus tuli vuosien varrella puolijohdeteollisuudessa niin tunnetuksi, että sitä alettiin kutsua lopulta Mooren laiksi.

Mooren ennustus Electronics-lehden numerossa 8 vuonna 1965

Mooren kirjoittaessa artikkeliaan Electoronics Magazine -lehteen, markkinoiden monimutkaisimmat integroidut piirit rakentuivat noin 30 transistorista ja vastuksesta. Moore työskenteli itse projektissa, jonka komponenttien lukumäärä oli 60 kappaletta. Kun Moore kirjoitti numerot paperille ja mietti, miten puolijohdeteollisuus oli kehittynyt Texas Instrumentsilla työskennelleen Jack Kilbyn vuonna 1958 esittelemästä maailman ensimmäisestä integroidusta piiristä, oli hänen yksinkertainen ennustukseensa vuosittain kaksinkertaistuvasta transistorimäärästä valmis.

10 vuotta myöhemmin vuonna 1975 Moore korjasi lakiaan ja määritti transistorien lukumäärän kaksinkertaistuvan kahden vuoden välein. Inteliä perustamassa ollut Moore ja hänen lakinsa olivat useiden vuosikymmenien ajan tärkeä osa Intelin kehitysstrategiaa ja yrityksen markkinointia puolijohdeteollisuuden kehityksessä aina 2000-luvulle asti. Nykyisin Mooren lakia kunnioitetaan yhä tärkeänä osana puolijohdekehityksen historiaa, mutta sen soveltuvuudesta nykypäivän kehitystahtiin on kiistelty jo vuosien ajan. Tästä huolimatta Intel turvautuu yhä tuotteidensa markkinoinnissa nykyisin yrityksen hallituksen puhemiehenä toimivan Mooren lakiin.

 

Mikroprosessorin kellotaajuus ja toiminta

Mikroprosessorin yksi tärkeimmistä ominaisuuksista on kellotaajuus, jolla se toimii. Kellotaajuus tarkoittaa sitä, kuinka monta kertaa mikroprosessorin piisirulle integroidut kytkiminä toimivat transistorit voivat vaihtaa tilaansa tietyssä ajanjaksossa. Mikroprosessoreiden kellotaajuuden perusyksikkö on hertsi (Hz), mutta jo lähes mikroprosessoreiden historian alusta alkaen nopeudet on ilmoitettu megahertseinä (MHz). Intelin 4004-mikroprosessori, joka suunniteltiin alun perin japanilaisen Busicomin taskulaskimiin, rakentui 2300 transistorista ja sen maksimikellotaajuus oli 740 kilohertsiä (kHz). Suunnitellussa 4004-mikroprosessorissa transistorit kykenivät vaihtamaan tilaansa 740 000 kertaa sekunnissa. IBM:n vuonna 1981 julkaisemassa maailman ensimmäisessä PC-tietokoneessa käytetty Intelin 8088-mikroprosessori toimi 4,77 MHz:n kellotaajuudella. Vuonna 2000 prosessorivalmistajat Intel ja AMD esittelivät markkinoille ensimmäistä kertaa gigahertsin (GHz) kellotaajuudella toimivat mikroprosessorimallit. Nykypäivänä Markkinoiden suorituskykyisimpien mikroprosessoreiden kellotaajuudet liikkuvat kolmen ja neljän gigahertsin välimaastossa. Terahertsin kellotaajuudella on saatu toimimaan vasta yksittäisiä transistoreita.

Mikroprosessorin sisäinen kellosignaali.

Kaikki digitaalinen elektroniikka edellyttää jonkinlaisia kelloja voidakseen toimia yhdessä. Kello-oskillaattorin tehtävänä on tahdittaa tietokoneen sisäiset toiminnot niin, että eri osat prosessorin sisällä ja sen ulkopuolella toimivat samassa tahdissa. Mitä suurempi kello-oskillaattorin taajuus on, sitä nopeammin mikroprosessori ja koko tietokone toimivat. Mikroprosessori voi sisältää sisäisen kello-oskillaattorin, jolloin siinä on liitännät ulkoiselle kiteelle. Toinen vaihtoehto on, että mikroprosessori tarvitsee toimiakseen kokonaan ulkopuolisen kello-oskillaattorin.

Jokaisella mikroprosessorin kellojaksolla suoritetaan yksi vaihe, jonka jälkeen suoritus siirtyy seuraavaan vaiheeseen. Käsky siirtyy liukuhihnan vaiheesta toiseen kellopulssin tahdittamana. Kellopulssia tarvitaan myös, kun tietoa siirretään oheislaitteille. Kellon avulla mikroprosessori ja väylällä oleva ohjain voivat tahdistaa toimintansa niin, että kirjoittava osapuoli esittää datan ja osoitteen siten, että vastaanottava osapuoli tietää, mistä hetkestä eteenpäin väylällä on kelvolliset arvot. Toimintaa tahdistetaan kellopulssien reunoilla ja puhutaan joko pulssin nousevasta ja/tai laskevasta reunasta. Kellojen muodostaminen tapahtuu omassa lohkossa ja siihen käytetään joko valmiita oskillaattoreita tai kiteitä ohjaamaan mikroprosessorissa olevaa oskillaattoripiiriä. Vanhoissa mikroprosessoreissa käytettiin yksi oskillaattori jokaista tarvittavaa kelloa varten. Nykyaikaisissa mikroprosessoreissa on mahdollista johtaa jakamalla ja kertomalla kaikki tietokoneen tarvitsemat kellotaajuudet samasta peruskellosta, kuten esimerkiksi keskusmuistin, emolevyn liitäntäväylien ja mikroprosessorin ja piirisarjan välisen väylän kellotaajuus.

Ulkoisen BCLK -peruskellon käyttö mikroprosessorissa.

Intel kutsuu uusimmissa mikroprosessoreissaan ulkoista peruskelloa Base Clock -termillä (BCLK), jonka kellotaajuus on 133 MHz ja AMD:n mikroprosessoreissa peruskelloksi kutsutaan 200 MHz:n referenssitaajuutta. Molempien valmistajien nykypäivän mikroprosessorimallien kokonaiskellotaajuus muodostetaan kertomalla peruskello mikroprosessorin sisäisellä kertoimella, joka muodostetaan vaihelukitussa silmukassa (Phase Locked Loop, PLL). Mikroprosessorimallin sisäinen kerroin määritetään ja asetetaan valmistajan toimesta jo valmistuksen yhteydessä, mutta sitä kontrolloidaan virransäästöön ja suorituskyvyn parannukseen liittyvillä ominaisuuksilla automaattisesti. Myös käyttäjä voi muuttaa tiettyjen mikroprosessorimallien sisäistä kerrointa emolevyn BIOS:sta.

Mikroprosessorien haitallisena ominaisuutena niiden virrankulutus kasvaa kellotaajuuden kasvaessa. Virrankulutuksen kasvaminen lisää komponentin lämpenemistä, lämpeneminen vanhentaa komponenttia ja saattaa lopulta jopa rikkoa sen. Siksi mikroprosessoreissa ei aina välttämättä käytetä mahdollisimman korkeaa kellotaajuutta.

Mikroprosessoreiden kellotaajuuden kasvaminen vuoteen 2002 asti

Mikroprosessoreiden kellotaajuus kaksinkertaistui vuoteen 2002 asti kolmen vuoden välein. Tuolloin mikroprosessoreiden kellotaajuuden ennustettiin jatkavan kasvua 5-10 GHz:iin, mutta toistaiseksi korkeimmalla kellotaajuudella markkinoille julkaistu x86-arkkitehtuuriin perustuva malli on Intelin Pentium 4 570J, joka toimii 3,8 GHz:n kellotaajuudella.

 

Mikroprosessorin suorituskyky

Kun sanotaan, että joku tietokone on nopeampi kuin toinen, sillä voidaan eri yhteyksissä tarkoittaa eri asioita. Työpöytätietokoneen käyttäjän kohdalla puhutaan yleensä yksittäisten ohjelmien käskyjen suorittamiseen kuluvasta ajasta, jota kutsutaan prosessoriajaksi. Prosessoriaika on kertakäyttöinen resurssi ja mitä lyhyemmässä ajassa tietokone suorittaa ohjelman käskyt, esimerkiksi koodaa musiikki- tai videotiedoston formaatista toiseen, purkaa tai pakkaa suuren joukon tiedostoja, laskee monimutkaisilla kaavoilla joukon laskutoimituksia tai mitä suuremmalla ruudunpäivitysnopeudella se renderöi 3D-grafiikkaa näytölle, sitä suorituskykyisempi tietokone on. Palvelinmaailmassa suorituskyvyn sijaan tärkeintä on suoritusteho eli kuinka monta tehtävää saadaan suoritettua esimerkiksi tunnissa.

Mikroprosessorin kellotaajuus on yksi tärkeimmistä arvoista, kun puhutaan tietokoneen suorituskyvystä. Yhden kellojakson aikana prosessori suorittaa yhden perusoperaation ja yksi kellojakso tarkoittaa tilanvaihtoa loogisen nollan ja ykkösen välillä. Eri mikroprosessorimallien suorituskykyä ei voida suoraan vertailla kellotaajuuden mukaan, sillä suorituskykyyn vaikuttaa aina myös mikroprosessorin arkkitehtuuri ja sen Instructions Per Clock -tehokkuus (IPC) eli kuinka monta käskyä se kykenee suorittamaan yhden kellojakson aikana. Ainoastaan samaan arkkitehtuuriin perustuvia mikroprosessoreita voidaan vertailla keskenään kellotaajuutta katsomalla ja mikroprosessorin suorituskyky voidaan laskea kellotaajuuden ja IPC-tehokkuuden tulona:

Suorituskyky = Kellotaajuus * Käskyjä kellojaksossa

Prosessoriaika on riippuvainen edellä mainitusta kellotaajuudesta ja IPC-tehokkuudesta sekä lisäksi käskyjen lukumäärästä. 10 % parannus mihin tahansa edellä mainituista ominaisuuksista johtaa 10 % parannukseen prosessoriajassa. Mikroprosessorin käyttämä perusarkkitehtuuri on kytköksissä kellotaajuuteen siten, että jokaisen käskyn suorittamiseen vaaditaan tietty määrä kellojaksoja. Näin ollen, mitä korkeammalla kellotaajuudella mikroprosessori toimii, sitä enemmän käskyjä se kykenee suorittamaan samassa ajanjaksossa. Mikroprosessoreihin on kehitetty vuosien varrella uusia lisäkäskykantoja, joiden avulla saadaan muun muassa vähennettyä suoritettavien peruskäskyjen lukumäärää ja sitä myötä vähennettyä prosessoriaikaa.

Ajan lisäksi yleisesti käytetty mikroprosessorin suorituskyvyn mittari on suoritettavien liukulukulaskujen lukumäärä sekunnissa eli Floating Point Operations Per Second (FLOPS). FLOPS on yleinen termi varsinkin tieteellisessä laskennassa, joka perustuu vahvasti supertietokoneilla suoritettaviin liukulukulaskuihin. Supertietokoneista ilmoitetaan tavallisesti niiden teoreettinen ja käytännössä saavutettu FLOPS-laskentateho, jotka listataan kahdesti vuodessa päivittyvällä Top500.org-sivuston ylläpitämällä maailman supertietokoneiden nopeuslistalla. Tällä hetkellä listan kärjessä on Kiinalainen Tianhe-1A, joka on varustettu 14336 Intel Xeon X5670 -prosessorilla ja 7168 NVIDIAn Tesla M2050 GPGPU-prosessorilla. Sen teoreettinen laskentateho on noin 4,7 petaflop/s (Rpeak) ja korkein testiohjelmistolla käytännössä saavutettu laskentateho 2,5 petaflop/s (Rmax).

 

Artikkeli perustuu osiin diplomityöstä: Mikroprosessorin ylikellottaminen. TTY Tieto- ja sähkötekniikan tiedekunta, 2010, 67 s