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.[1] Valmistajat eivät kyenneet CTC:n aikatauluun mutta saivat pitää suunnitelmansa.[1] Intel aloitti Intel 8008:n myynnin.[1]
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.[2] Uudemmissa 64-bittisissä suorittimissa on long mode -tila.[3]
Käskysarja on CISC-tyypinen.[4] Käskyissä on useita vaihtuvamittaisia sekä valinnaisia kenttiä ja yhden käskyn pituus voi vaihdella yhdestä kuuteentoista tavuun.[4] CISC-käskyt pilkotaan RISC-tyyppisiin mikro-operaatioihin suuremman suorituskyvyn ja hyötysuhteen vuoksi.[5]
Siirtymisessä 64-bittiseen AMD64-arkkitehtuuriin segmentoidusta muistista on luovuttu muistisivujen käytön johdosta.[3] Samalla yleiskäyttöisten rekisterien määrä on noussut kahdeksasta kuuteentoista ja suhteelliset viittaukset ovat tulleet mukaan, mikä helpottaa osoiteriippumattoman ohjelmakoodin tuottamista.[3]
Intel on käyttänyt x86-sarjan P6-suorittimista lähtien (1995) mikrokoodia, joka voidaan päivittää ohjelmallisesti suorittimen virheiden korjaamiseen.[6] AMD:llä on ollut tukea K7-mikroarkkitehtuurista lähtien (1999) ja VIA:lla VIA Nano -malleista lähtien (2008).[5] Käyttöjärjestelmät kuten Linux, Solaris ja Windows sisältävät ajuritukea mikrokoodin päivittämiseen ilman BIOSin päivitystä.[5] P6-suorittimissa oli pieni SRAM, johon mahtui enintään 60 mikrokäskyä.[7] Kaikkia x86-käskykannan komennoista ei toteutettu mikrokäskyillä.[7]
Suorittimien mikrokoodi on ollut oikeuskiistan aiheena NECin ja Intelin välillä.[8]
x86-64
AMD64
AMD:n K8 prosessoriarkkitehtuuri (palvelinversio nimellä AMD Opteron) toi mukanaan laajennuksia X86-arkkitehtuuriin.[9] K8 laajensi X86-arkkitehtuurin 64-bittiseksi AMD64-nimellä tunnetulla arkkitehtuurilla.[9]
Laajennuksen etuina ovat AMD:n kannalta se että 32-bittisellä alustalla tehdyt ohjelmistot toimivat myös AMD:n 64-bittisellä Sledgehammeriksi kutsutulla alustalla.[9] Sledgehammerissa siruilla on 32- ja 64-bittiset data- ja osoitetoiminnot.[9]
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).
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.[12]
Intelin mallisarja palvelimiin tunnetaan nimellä Xeon.[13] Xeon-malleissa aiempi suoritinväylä on korvattu QuickPath-väylällä vuonna 2009.[12]
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:
AMD:n FMA3 (engl. fused multiply accumulate) lisää kolmen operandin käskylaajennuksia tyypillisten kahden operandin käskyjen rinnalle.[16] Lisäksi on kehitetty XOP-, FMA4- ja F16C- (ent. CVT16) laajennoksia.[17]
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.[18]
Lähteet
- Cavanagh, Joseph: X86 Assembly language and C fundamentals. Boca Raton, FL: CRC Press, 2013. ISBN 978-1-4665-6824-2. (englanniksi)
- Peltoniemi, Jari: RISCiä ja X86-yhteensopivuutta. Prosessori : modernin elektroniikan ja automaation erikoislehti, 1995, nro 11, s. 20-25. Helsinki: Tecnopress. ISSN 0357-4121.
Viitteet
- Datapoint 2200 history-computer.com. Viitattu 9.5.2019. (englanniksi)
- The PC BIOS will be killed off by 2020 as Intel plans move to pure UEFI 22.11.2017. Ars Technica. Viitattu 23.11.2017. (englanniksi)
- Porting Linux to x86-64 (PDF) SuSE Labs. Viitattu 12.1.2017. (englanniksi)
- Encoding Real x86 Instructions c-jump.com. Viitattu 29.9.2017. (englanniksi)
- Security Analysis of x86 Processor Microcode dcddcc.com. 11.12.2014. Viitattu 26.9.2020. (englanniksi)
- Microprocessor Types and Specifications informit.com. 8.6.2001. Viitattu 26.9.2020. (englanniksi)
- Linley Gwennap: P6 Microcode Can Be Patched (PDF) ele.uva.es. 15.9.1997. Arkistoitu . Viitattu 26.9.2020. (englanniksi)
- NEC v. INTEL : BREAKING NEW GROUND IN THE LAW OF COPYRIGHT (PDF) Harvard Journal of Law & Technology. 1990. Viitattu 26.9.2020. (englanniksi)
- http://www.prosessori.fi/uutiset/uutinen2.asp?id=33156 (Arkistoitu – Internet Archive)
- Intel EM64T Technology Explained hardwaresecrets.com. 15.12.2005. Viitattu 19.9.2020. (englanniksi)
- EM64T (Intel 64) Tech-FAQ. Viitattu 12.1.2017.
- Intel's New Core i7 and Xeon 5500 CPUs electronicsnexus. Viitattu 15.1.2017.
- Intel Xeon CPU-World. Viitattu 12.1.2017.
- (March 2013) Intel 64 and IA-32 Architectures Software Developer’s Manual Volume 1: Basic Architecture. Intel.
- (March 2000) 3DNow! Technology Manual. AMD.
- AMD plots single thread boost with x86 extensions The Register. Viitattu 13.3.2017.
- Christie, Dave: Striking a Balance AMD. Arkistoitu 4.11.2013. Viitattu 13.3.2017.
- Peter Bright: Intel fires warning shots at Microsoft, claims x86 emulation is a patent minefield 9.6.2017. Ars Technica. Viitattu 19.9.2020. (englanniksi)
Kirjallisuutta
- Lähteinen, Olavi; Pietikäinen, Ville; Kosonen, Harri: Uusi PC-tekniikan käsikirja, s. 41–64. 6. painos. Helsinki Media Erikoislehdet, 2000 (1997). ISBN 951-832-015-9.
Aiheesta muualla
- x86 Assembly Guide (englanniksi)
- X86 Opcode and Instruction Reference (englanniksi)
- Intelin suorittimet (englanniksi)
- AMD:n suorittimet (englanniksi)
- VIA:n suorittimet (englanniksi)
- Zilogin suorittimet (englanniksi)