X86

x86 on Intelin kehittämä ja valmistama suoritinarkkitehtuuri. Intel ei ole arkkitehtuurin mukaisten suorittimien ainoa valmistaja vaan myös AMD, Cyrix, NEC, Transmeta, VIA ja Zilog ovat valmistaneet x86-yhteensopivia suorittimia lisenssillä.
IBM PC:n jälkeen useat henkilökohtaiset tietokoneet käyttävät x86-arkkitehtuurin tai uudemman x86-64:n mukaista suoritinta. Ennen IBM PC:tä muun muassa MOS 6502 oli laajalti käytössä mikrotietokoneissa ja varhaiseksi henkilökohtaiseksi tietokoneeksi on kutsuttu myös vuonna 1961 suunniteltua LINC-tietokonetta.
== Historia ==
Computer Terminal Corporation (CTC) sopi kahden mikropiirivalmistajan kanssa (Intel ja Texas Instruments) ohjelmoitavan PMOS-piirin kehittämisestä Datapoint 2200 -päätettä varten. Valmistajat eivät kyenneet CTC:n aikatauluun mutta saivat pitää suunnitelmansa. Intel aloitti Intel 8008:n myynnin.
8-bittisen 8008:n pohjalta kehitettiin Intel 8080 sekä 16-bittinen Intel 8086, joka oli ensimmäinen x86-suoritin. 8086:n pohjalta kehitettiin 8-bittisellä ulkoisella väylällä varustettu Intel 8088, jonka IBM valitsi IBM PC -tietokoneeseen. Ennen IBM PC:tä markkinoilla oli "vuoden 1977 kolmikko" mikrotietokoneita: Apple II, Commodore PET ja TRS-80.
Seuraavia 16-bittisiä suorittimia olivat Intel 80186 ja Intel 80286.
32-bittisen Intel 80386:n myötä käskykanta sai nimen IA-32 ja sitä seurasi Intel 80486.
== Intelin alkuperäiset x86-suorittimet ==
1972 Intel toi markkinoille ensimmäisen 8-bittisen mikrosuorittimen 8008.
Seuraavana vuonna tuli parannettu versio 8080, joka on tunnetuin toisen sukupolven mikrosuoritin, ja 1976 edelleen parannettu versio 8085.
1978 Intel pyrki jättämään kilpailijat taakseen siirtymällä 16-bittiseen suorittimeen julkistamalla mallin 8086. 8087-liukulukulaskentayksikköä käytetään suorittimen rinnalla matemaattisiin laskutoimituksiin. Tiedonkäsittely ja -siirto tapahtuvat 16-bittisin sanoin. Suorittimen muistiavaruus on yksi megatavu, joka on jaettu 64 kilotavun segmentteihin. Tämä suoritin oli 10 kertaa nopeampi kuin 8080 ja käskykannaltaan pääosin yhteensopiva 8080-mallin kanssa.
8088 on kehitetty 8086-mallista kustannusten säästämiseksi. Siinä tiedonsiirto suorittimen ulkopuolella tapahtuu 8-bittisinä tavuina, mutta käskykannaltaan yhteensopivana suoritin tunnistaa kuitenkin kaikki 8086-suorittimen käskyt, eikä ohjelmoijan tarvitse tietää kumpi suoritin on käytössä. 8-bittinen ulkoinen dataväylä mahdollisti halvempien oheiskomponenttien käytön, mutta teki suorittimesta hitaamman.
1982 Intel toi markkinoille 16-bittisen 80186-suorittimen (ja 8-bittisen 80188-suorittimen). Tähän suorittimeen on yhdistetty toiminnot, jotka 8086-suorittimella vaativat 15 ylimääräistä mikropiiriä. Ohjelmallinen yhteensopivuus vanhempiin suorittimiin säilytettiin, mutta sen lisäksi suorittimeen sisällytettiin muutama uusi suoritinkäsky. 80187-mallia käytettiin 80186-suorittimen rinnalla matemaattisten laskutoimitusten nopeaan suorittamiseen.
1982 esitellyn 80286:n (matematiikkasuoritin 80287) ympärille IBM rakensi siihen asti kehittyneimmän tietokonemallinsa IBM PC/AT:n 1984. Tässä suorittimessa on toimintoja, jotka sallivat parannetun muistinhallinnan ja ohjelmien moniajon. Muistiavaruus on 16 megatavua ja näennäismuistia yksi gigatavu. Parannuksista huolimatta muistinhallinta oli kuitenkin edelleen hankalaa, koska suorittimen rekisterit olivat kapeampia kuin koneen osoiteväylän leveys.
== IA-32 ==
Intel 80386 mallista lähtien Intel luopui asteittain alkuliitteestä 80 ja otti sen tilalle käyttöön kirjaimen i erottautuakseen kilpailijoistaan. IA-32 käskykanta esiteltiin 80386 mallissa, josta johtuen siihen toisinaan viitataan i386. Intel viittaa nykyään 32-bittiseen x86-arkkitehtuuriin nimellä IA-32, joka on lyhenne sanoista Intel Architecture, 32-bit.
80386 eli i386 (matematiikkasuoritin i387, ns. x87) on 80286-suorittimen laajennus, jossa rekisterien ja osoiteväylän ja laskentayksiköiden leveys on 32 bittiä. Muistiavaruus on 4 gigatavua, eikä segmentointia enää välttämättä tarvitse käyttää, mikä helpotti huomattavasti suurten ohjelmien sekä modernien käyttöjärjestelmien tekemistä suorittimelle.
i486 on 386-mallin nopeampi versio. Matematiikkasuoritin on ensimmäistä kertaa integroitu samaan piiriin perussuorittimen kanssa. 486 oli ensimmäinen liukuhihnoitettu x86-suoritin, ja liukuhihnansa ansiosta se pystyi aloittamaan uusien käskyjen suorittamisen selvästi useammin kuin 80386, jossa käskyjen välillä meni aina useampi kellojakso.
Intelin seuraavan sukupolven suorittimien tuotemerkiksi tuli Pentium. Pentium-suorittimet ovat ohjelmallisesti yhteensopivia alkuperäisen 8086-suorittimen kanssa, mutta lisäksi on olemassa joukko uusia ohjelmakäskyjä.
== Tekniikkaa ==
Yhteisiä piirteitä x86-arkkitehtuurin mukaisessa suorittimessa ovat olleet peruskäskykanta, rekisterit ja segmentoitu muistiarkkitehtuuri.
Suunnittelussa on ollut periaatteena, että vanhemman sukupolven suorittimelle kirjoitetut ohjelmat toimivat uudemmissakin suorittimissa sellaisenaan.
16-bittiset mallit käyttivät real mode -tilaa, jonka jälkeen 80386:n myötä tuli 32-bittinen protected mode -tila. Uudemmissa 64-bittisissä suorittimissa on long mode -tila.
Käskysarja on CISC-tyypinen. Käskyissä on useita vaihtuvamittaisia sekä valinnaisia kenttiä ja yhden käskyn pituus voi vaihdella yhdestä kuuteentoista tavuun. CISC-käskyt pilkotaan RISC-tyyppisiin mikro-operaatioihin suuremman suorituskyvyn ja hyötysuhteen vuoksi.
Siirtymisessä 64-bittiseen AMD64-arkkitehtuuriin segmentoidusta muistista on luovuttu muistisivujen käytön johdosta. Samalla yleiskäyttöisten rekisterien määrä on noussut kahdeksasta kuuteentoista ja suhteelliset viittaukset ovat tulleet mukaan, mikä helpottaa osoiteriippumattoman ohjelmakoodin tuottamista.
Intel on käyttänyt x86-sarjan P6-suorittimista lähtien (1995) mikrokoodia, joka voidaan päivittää ohjelmallisesti suorittimen virheiden korjaamiseen. AMD:llä on ollut tukea K7-mikroarkkitehtuurista lähtien (1999) ja VIA:lla VIA Nano -malleista lähtien (2008). Käyttöjärjestelmät kuten Linux, Solaris ja Windows sisältävät ajuritukea mikrokoodin päivittämiseen ilman BIOSin päivitystä.
P6-suorittimissa oli pieni SRAM, johon mahtui enintään 60 mikrokäskyä. Kaikkia x86-käskykannan komennoista ei toteutettu mikrokäskyillä.
Suorittimien mikrokoodi on ollut oikeuskiistan aiheena NECin ja Intelin välillä.
== x86-64 ==
=== AMD64 ===
AMD:n K8 prosessoriarkkitehtuuri (palvelinversio nimellä AMD Opteron) toi mukanaan laajennuksia X86-arkkitehtuuriin.http://www.prosessori.fi/uutiset/uutinen2.asp?id=33156 K8 laajensi X86-arkkitehtuurin 64-bittiseksi AMD64-nimellä tunnetulla arkkitehtuurilla.
Laajennuksen etuina ovat AMD:n kannalta se että 32-bittisellä alustalla tehdyt ohjelmistot toimivat myös AMD:n 64-bittisellä Sledgehammeriksi kutsutulla alustalla. Sledgehammerissa siruilla on 32- ja 64-bittiset data- ja osoitetoiminnot.
AMD:n prosessoreissa Athlon 64 -mallista lähtien lähtien northbridge muistiohjain on ollut integroituna CPU:lle käyttäen HyperTransport-väylää (ent. Lightning Data Transport, LDT).
=== EM64T ===
EM64T (Extended Memory 64 Technology) on vanha termi Intelin 64-bittinen laajennus IA-32-käskykannalle, joka oli kilpaileva AMD:n AMD64-laajennuksen kanssa.
Nykyisin käytössä on joko Intel 64 tai x64 (kun liittyy myös AMD64-laajennukseen).
== Palvelinmallit ==
AMD:n palvelinmallisarja tunnetaan nimellä AMD Opteron. Opteron-mallit ottivat käyttöön HyperTransport-väylän vuonna 2003 korvaten aiemman suoritinväylä-teknologian.
Intelin mallisarja palvelimiin tunnetaan nimellä Xeon. Xeon-malleissa aiempi suoritinväylä on korvattu QuickPath-väylällä vuonna 2009.
== Muiden valmistajien x86-suorittimet ==
Cyrix suunnitteli alun perin Intel-yhteensopivan mutta nopeamman matematiikkaprosessorin, mutta myöhemmin alkoi suunnitella kokonaisia suorittimia. 486- ja Pentium-aikakausina Cyrix suunnitteli ja valmistutti suorittimia, jotka olivat huomattavasti Intelin vastaavia halvempia, mutta vain hiukan hitaampia. Cyrix poistui markkinoilta kun VIA osti sen. Tunnetuin Cyrix-prosessori oli Cyrix 6x86 vuodelta 1995.
Myös VIA valmistaa pienen sähkönkulutuksen suorittimia, joissa on x86-arkkitehtuuri. VIA on tunnetumpi henkilökohtaisten tietokoneiden suorittimien ohjeispiirien valmistajana. VIA:n prosessorit perustuvat pääosin IDT:n Winchip-piireihin, VIA:n ostettua IDT:n Centaur-nimisen prosessoriosaston.
AMD osti 1996 x86-arkkitehtuurin mukaisia suorittimia valmistaneen NexGen-yritysen. Tunnetuin NexGen-yrityksen suoritin oli Nx586 vuodelta 1995.
Jo 1970-luvulla Intelin kanssa kilpaili Zilog-nimisen yrityksen valmistama 8080 suorittimen parannettu versio Z80. Zilog myy yhä samaa prosessoria pienten sulautettujen sovellusten tarpeisiin.
NEC valmisti aikoinaan 8088- ja 8086-yhteensopivia suorittimia, mm. nimillä V20 ja V30. NEC:in valmistamat mallit olivat n. 30 % Intelin vastaavia nopeampia.
Transmeta kehitti Crusoe- ja Efficeon-prosessorit, joissa painotettiin aiempaa pienempää virrankulutusta.
AMD on valmistanut x86-yhteensopivia suorittimia pitkän aikaa, mm. AMD Am386 (1991) alkaen.
== Käskylaajennuksia ==
Yleisesti tunnettuja SIMD-tyyppisiä käskykantalaajennuksia ovat:
* MMX
* 3DNow
* SSE (SSE2, SSE3, SSE4)
* AVX (AVX2, AVX512)
AMD:n FMA3 () lisää kolmen operandin käskylaajennuksia tyypillisten kahden operandin käskyjen rinnalle. Lisäksi on kehitetty XOP-, FMA4- ja F16C- (ent. CVT16) laajennoksia.
Lisäksi nykyisissä prosessoreissa on virtualisointitekniikat (AMD-V, VT-x, VIA VT).
Useissa AMD-prosessoreissa on tuki IOMMU-toiminnolle, joka Intelillä sisältyy VT-d-toimintoon.
Tuki eri laajennuksille vaihtelee prosessorimallin ja valmistajan mukaan.
== Patentit ==
Intel on varoittanut yhtiöitä, jotka suunnittelevat x86-käskykannan emulointia käskykantaan liittyvistä patenteista.
==Lähteet==
* 
* 
=== Viitteet ===
==Kirjallisuutta==
* 
== Aiheesta muualla ==
* x86 Assembly Guide 
* X86 Opcode and Instruction Reference 
* Intelin suorittimet 
* AMD:n suorittimet 
* VIA:n suorittimet 
* Zilogin suorittimet 
Luokka:Suoritinarkkitehtuurit
Luokka:Seulonnan keskeiset artikkelit