x86
Tätä artikkelia tai sen osaa on pyydetty päivitettäväksi, koska sen sisältö on osin vanhentunut. Voit auttaa Wikipediaa parantamalla artikkelia. Lisää tietoa saattaa olla keskustelusivulla. Tarkennus: Suurelta osin tarvitsee tietojen tarkistamista, päivitystä ym. |
Tähän artikkeliin tai osioon ei ole merkitty lähteitä, joten tiedot kannattaa tarkistaa muista tietolähteistä. Voit auttaa Wikipediaa lisäämällä artikkeliin tarkistettavissa olevia lähteitä ja merkitsemällä ne ohjeen mukaan. |
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
[muokkaa | muokkaa wikitekstiä]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
[muokkaa | muokkaa wikitekstiä]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
[muokkaa | muokkaa wikitekstiä]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
[muokkaa | muokkaa wikitekstiä]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
[muokkaa | muokkaa wikitekstiä]AMD64
[muokkaa | muokkaa wikitekstiä]- Pääartikkeli: AMD64
AMD:n suunnittelemista laajennuksista uutisoitiin alkuvuodesta 2002.[9] AMD:n ehdotuksen myötä laajennuksia kutsuttiin termillä x86-64, joka sisälsi yhteensopivuuden olemassa olevian 32-bittisien ohjelmistojen kanssa.[9][10] AMD:n laajennukset kiinnostivat laitevalmistajia huomattavasti kesällä 2002, kun AMD lupasi taaksepäin yhteensopivuutta olemassa olevien ohjelmistojen kanssa sekä uusien laajennuksien tarvitsevan vain 2-3 prosenttia enemmän piisirun pinta-alaa. Samaan Intel oli ongelmissa IA-64 (Itanium) -arkkitehtuurin kanssa. Vastineena Intel aloitti oman Yamhill-projektinsa 64-bittisien laajennuksien lisäämiseen IA-32 käskykantaa käyttävään suorittimeen.[11] AMD julkaisi 64-bittisen Athlon 64:n syyskuussa 2003.[12]
AMD:n 64-bittiset laajennukset lisäsivät sekä yleiskäyttöisiä rekistereitä että SSE/SSE2-laajennuksien rekistereiden määrää ja laajensivat osoiteavaruutta. Vuoden 2003 artikkeleissa arkkitehtuuria kutsuttiin jo nimellä AMD64. AMD:n ratkaisulla 64-bittinen suoritin voi ajaa sekä 32- että 64-bittisiä ohjelmia ja käyttöjärjestelmiä.[13][14][9]
AMD:n K8 prosessoriarkkitehtuuri (palvelinversio nimellä AMD Opteron) toi mukanaan laajennuksia X86-arkkitehtuuriin.[15] K8 laajensi X86-arkkitehtuurin 64-bittiseksi AMD64-nimellä tunnetulla arkkitehtuurilla.[15] 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
[muokkaa | muokkaa wikitekstiä]Intelin Yamhill-projekti tähtäsi lisäämään 64-bittisen laajennuksen IA32-käskykantaa käyttäviin suorittimiin.[16] Intel kutsui tätä Intel 64 -arkkitehtuuriksi ja EMT64-arkkitehtuuriksi.[17][18]
EM64T (Extended Memory 64 Technology) oli Intelin käyttämä termi 64-bittiselle laajennukselle. Intel myöhemmin muutti käskykantaa, jolloin siitä tuli yhteensopiva AMD64-laajennuksen kanssa.[19][20] Intelin toteutuksesta puuttuu muutamia osia, kuten AMD:n 3DNow!-käskyt, liukulukutilan vähennetty tallennus. Lisäksi Intelillä on omia ominaisuuksia, kuten prosessorin sarjanumero ja MONITOR- ja MWAIT-käskyt. Suorittimissa on joitain eroja, kuten tyhjennetäänkö rekisterien ylimmät bitit, kun vain alimpia käytetään. Varhaisesti Intelin toteutuksesta puuttui myös NX-bitin tuki ja muistiavaruus oli rajoitettu 236 tavuun, kun nykyisissä se on 240 tavua.[21]
Intel julkaisi kesällä 2004 Nocona-koodinimellä tunnetun Xeon-prosessorin, joka käytti EMT64-laajennuksia.[22] Vuonna 2005 julkaistussa Pentium 4 -mallissa Intel lisäsi tuen AMD:n käskykannalle, mutta käytti arkkitehtuurista usein kryptisiä nimityksiä kuten IA-32e.[23][24][25]
Muut valmistajat
[muokkaa | muokkaa wikitekstiä]AMD:n ja Intelin lisäksi VIA valmisti 64-bittistä x86-64 suoritinta (koodinimi Isaiah), joka julkaistiin vuonna 2008.[26]
Palvelinmallit
[muokkaa | muokkaa wikitekstiä]AMD:n palvelinmallisarja tunnetaan nimellä AMD Opteron. Opteron-mallit ottivat käyttöön HyperTransport-väylän vuonna 2003 korvaten aiemman suoritinväylä-teknologian.[27]
Intelin mallisarja palvelimiin tunnetaan nimellä Xeon.[28] Xeon-malleissa aiempi suoritinväylä on korvattu QuickPath-väylällä vuonna 2009.[27]
Muiden valmistajien x86-suorittimet
[muokkaa | muokkaa wikitekstiä]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.
Ominaisuudet
[muokkaa | muokkaa wikitekstiä]32-bittinen x86 (80386 ja uudemmat) sisältävät kahdeksan yleiskäyttöistä 32-bittistä rekisteriä, joiden nimet ovat pääosin historiallisista syistä johtuvia. Kaksi rekisteriä on varattu erityiskäyttöön: pino-osoitin (ESP
) ja perusosoitin (EBP
). Rekistereistä voidaan osoittaa osaan, esimerkiksi EAX
rekisterin kahta vähiten merkitsevää tavua voidaan käyttää 16-bittisenä rekisterinä nimeltä AX
AX
rekisterin vähemmän merkitsevää tavua voidaan käyttää 8-bittisellä rekisterillä nimeltä AL
ja ylempää tavua rekisterillä AH
. Alirekisterit ovat peräisin vanhemmasta 16-bittisestä käskykannasta.[29]
Käskylaajennuksia
[muokkaa | muokkaa wikitekstiä]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.[33] Lisäksi on kehitetty XOP-, FMA4- ja F16C- (ent. CVT16) laajennoksia.[34]
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
[muokkaa | muokkaa wikitekstiä]Intel on varoittanut yhtiöitä, jotka suunnittelevat x86-käskykannan emulointia käskykantaan liittyvistä patenteista.[35]
Lähteet
[muokkaa | muokkaa wikitekstiä]- 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
[muokkaa | muokkaa wikitekstiä]- ↑ a b c 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)
- ↑ a b c Porting Linux to x86-64 (PDF) SuSE Labs. Viitattu 12.1.2017. (englanniksi)
- ↑ a b Encoding Real x86 Instructions c-jump.com. Viitattu 29.9.2017. (englanniksi)
- ↑ a b c 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)
- ↑ a b 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)
- ↑ a b c Jon Stokes: An Introduction to 64-bit Computing and x86-64 arstechnica.com. 12.3.2002. Viitattu 7.1.2024. (englanniksi)
- ↑ The AMD x86-64 Architecture Extending the x86 to 64 bits (PDF) old.hotchips.org. elokuu 2002. Viitattu 8.1.2024. (englanniksi)
- ↑ John Markoff & Steve Lohr: Intel's Huge Bet Turns Iffy nytimes.com. 29.9.2002. Viitattu 7.1.2024. (englanniksi)
- ↑ Terril Yue Jones: AMD to Offer First 64-Bit PC Chip latimes.com. 22.9.2003. Viitattu 7.1.2024. (englanniksi)
- ↑ Anand Lal Shimpi: AMD Athlon 64 & Athlon 64 FX - It's Judgment Day anandtech.com. 23.9.2003. Viitattu 8.1.2024. (englanniksi)
- ↑ Anand Lal Shimpi: AMD Athlon 64 & Athlon 64 FX - It's Judgment Day (sivu 2) anandtech.com. 23.9.2003. Viitattu 8.1.2024. (englanniksi)
- ↑ a b http://www.prosessori.fi/uutiset/uutinen2.asp?id=33156 (Arkistoitu – Internet Archive)
- ↑ Intel is Continuing the Yamhill Project? neowin.net. 4.8.2003. Viitattu 7.1.2024. (englanniksi)
- ↑ Intel 64 architecture intel.com. Viitattu 7.1.2024. (englanniksi)
- ↑ What Is Intel Extended Memory 64 Technology? intel.com. Viitattu 7.1.2024. (englanniksi)
- ↑ Intel EM64T Technology Explained hardwaresecrets.com. 15.12.2005. Viitattu 19.9.2020. (englanniksi)
- ↑ Tony Smith: Intel tweaks EM64T for full AMD64 compatibility theregister.com. 23.8.2005. Viitattu 7.1.2024. (englanniksi)
- ↑ https://www.opsinventor.com/whats-the-difference-between-amd64-and-intel-em64t/
- ↑ Tom Krazit: Intel unwraps Nocona infoworld.com. 2.7.2004. Viitattu 7.1.2024. (englanniksi)
- ↑ The Pentium 4 adds 64-bit Extensions informit.com. 17.1.2005. Viitattu 7.1.2024. (englanniksi)
- ↑ Frequently Asked Questions Arkistoitu Viitattu 7.1.2024. (englanniksi)
- ↑ Intel Quietly Adopts AMD's x86-64 hardware.slashdot.org. Viitattu 7.1.2024. (englanniksi)
- ↑ Jon Stokes: Isaiah revealed: VIA’s new low-power architecture arstechnica.com. 24.1.2008. Viitattu 29.8.2023. (englanniksi)
- ↑ a b Intel's New Core i7 and Xeon 5500 CPUs electronicsnexus. Viitattu 15.1.2017.
- ↑ Intel Xeon CPU-World. Viitattu 12.1.2017.
- ↑ x86 Assembly Guide cs.virginia.edu. 8.3.2022. Viitattu 31.1.2024. (englanniksi)
- ↑ Intel 64 and IA-32 Architectures Software Developer’s Manual Volume 1: Basic Architecture. Intel, March 2013. Teoksen verkkoversio.
- ↑ 3DNow! Technology Manual. AMD, March 2000. Teoksen verkkoversio.
- ↑ Gavin Bonshor: Intel Unveils AVX10 and APX Instruction Sets: Unifying AVX-512 For Hybrid Architectures anandtech.com. 25.7.2023. Viitattu 29.8.2023. (englanniksi)
- ↑ 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
[muokkaa | muokkaa wikitekstiä]- 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
[muokkaa | muokkaa wikitekstiä]- x86 Assembly Guide (englanniksi)
- X86 Opcode and Instruction Reference (englanniksi)
- Intelin suorittimet (englanniksi)
- AMD:n suorittimet (englanniksi)
- VIA:n suorittimet (englanniksi)
- Zilogin suorittimet (englanniksi)