Ebben a cikkben a X86 lenyűgöző világába fogunk beleásni. A X86 eredetétől mai relevanciájáig számos területen érdekelt. A történelem során a X86 bizonyította befolyását a társadalomban, a kultúrában, a technológiában, a politikában és sok más területen. A mélyreható elemzés során feltárjuk a X86 körül kialakult különböző nézőpontokat és megközelítéseket, valamint annak a mindennapi életre gyakorolt hatását. Ez a cikk átfogó képet kíván adni a X86-ről, releváns és naprakész információkat nyújtva azoknak, akik érdeklődnek a témával kapcsolatos ismereteik bővítése iránt.
Az x86 mikroprocesszorok utasításkészlet-architektúra szerinti sorozata,[1] melynek első megvalósítása az Intel 8086-os processzora. A 8086-os 1978-ban jelent meg, az Intel korábbi 8 bites 8080-as processzorának teljesen 16 bites kiterjesztéseként és ennél vezették be a memóriaszegmentálást (szegmentált memóriacímzést) a 16 bites címzés korlátainak megkerülésére (a 16 bites processzorok 16 bites címbusza közvetlenül 64 KiB memória címzését teszi lehetővé, a szegmentált címzéssel nagyobb memória címezhető). Az x86 jelölés onnan ered, hogy a 8086-os processzor utódainak jelölése eleinte csak számokból állt és rendre „86”-ra végződött, az „x” csak a változó részt jelölte. Az x86 utasításkészlet sok bővítménnyel egészült ki az idők során, majdnem következetesen betartva a visszafelé-kompatibilitást.[2] Az Intelen kívül a Cyrix, az Advanced Micro Devices, a VIA és mások is gyártottak x86-alapú processzorokat.
A kifejezés nem ugyanazt jelenti, mint a „IBM PC-kompatibilitás”, mivel ez utóbbi több más hardverelemre is vonatkozik, valamint a beágyazott rendszerekben és általános célú számítógépekben jóval az IBM PC piac kialakulása előtt használták az x86 típusú processzorokat.[3]
Mivel az „x86” kifejezés az Intel 80386 processzor megjelenése után terjedt el, általában a 80386-os 32 bites utasításkészletével való bináris kompatibilitást értik alatta. Ezt gyakran az x86-32 kitétellel hangsúlyozzák,[4] vagy az „x32” használatával, az eredeti 16 bites „x86-16” vagy a 64 bites x86-64 változatoktól való megkülönböztetés céljából. Az Intel az IA-32 jelölést használja a 32 bites, az Intel 64 jelölést a 64 bites változatokra (korábban az EM64T vagy IA-32e jelöléseket is alkalmazta ugyanerre). Az AMD az AMD64 jelölést részesíti előnyben az x86-64-gyel szemben. Bár az újabb személyi számítógépekben és szerverekben alkalmazott x86-os processzorok legtöbbje rendelkezik 64 bites tulajdonságokkal, a régebbi rendszerekkel való kompatibilitási problémák elkerülése érdekében az x86-64 (vagy x64) kifejezést gyakran a 64 bites, a x86 kifejezést pedig a 32 bites szoftver jelölésére használják.[5][6] Az IA-64 rövidítés egy másik Intel-architektúrára, az Itaniumra utal.
A 8086-os processzort ugyan elsősorban beágyazott rendszerekben való felhasználásra tervezték, válaszul a sikeres 8080-kompatibilis Zilog Z80 processzorra,[7] az x86 vonal gyors fejlődésnek indult, számítási teljesítménye megnőtt és új képességekkel bővült. Manapság az x86 szinte mindenhol jelen van, az egy helyben álló és hordozható személyi számítógépek terén, de elterjedt a miniszámítógépek illetve középméretű számítógépek (midrange computer) között is és sok helyen felváltotta a kiszolgálókban és munkaállomásokban hagyományosan alkalmazott RISC processzorokat.
Az x86-alapú hardverhez nagyon sok szoftver készült, számos operációs rendszer támogatja, többek között a DOS, Windows, Linux, BSD, Solaris és Mac OS X.
A modern x86 viszonylag ritka a beágyazott rendszerek körében, az alacsony fogyasztású (pl. elemes) alkalmazások, háztartási eszközök, játékok köréből szinte teljesen hiányzik.[8] Ezen a téren az egyszerű 8 és 16 bites architektúrák uralkodnak, bár léteznek 32 és 64 bites kialakítások is, pl. az x86-kompatibilis VIA C7, VIA Nano, AMD Geode, Athlon Neo és Intel Atom processzorokat felhasználják bizonyos viszonylag alacsony fogyasztást és árat igénylő szegmensekben.
Több kísérlet is volt az első egyszerű 8 bites processzortervektől kezdve „nem kifinomult” („elszabott”) x86 architektúra piaci túlsúlyának megdöntésére, még magától az Intel részéről is. Ezek példái az iAPX 432 (más néven Intel 8800), az Intel 960, Intel 860, és az Intel/Hewlett-Packard Itanium architektúra. Az x86 mikroarchitektúrák folyamatos finomítása, az elektronika és a félvezetőgyártás fejlődése azonban egyre nehezebbé tette az x86 leváltását az általa addigra elfoglalt területeken. Az AMD 64 bites kiterjesztése, amire az Intel azonnal a saját kompatibilis kialakításával válaszolt,[9] és az x86 csipek skálázhatósága – ld. pl. nyolcmagos Intel Xeon és 12-magos AMD Opteron – azt példázza, hogy a kialakult ipari szabványok folyamatos továbbfejlesztése, finomítása képes ellenállni a teljesen új architektúrák megjelenésével járó kihívásoknak.[10]
Az alábbi táblázat felsorolja a közismertebb x86 utasításkészletet használó, általános felhasználású processzorokat,[11] generációk szerint csoportosítva, kiemelve az x86 történetének fontosabb eseményeit. A CPU-generációk nem végleges és élesen elhatárolt csoportok; minden generációt általában egy újabb mikroarchitektúra jellemez, amelyhez jelentősebb továbbfejlesztés, javítás, vagy nagyobb üzleti siker kapcsolódik.
generáció | bevezetés ideje | kiemelkedő márkák | lineáris/fizikai címtér | fontosabb jellemzők |
---|---|---|---|---|
1 | 1978 | Intel 8086, Intel 8088 és klónjaik | 16 bites / 20 bites (szegmentált) | Az első x86 mikroprocesszorok. |
1982 | Intel 80186, Intel 80188 és klónjaik, NEC V20/V30 | Gyors címszámító hardver, gyors mul/div utasítások stb. | ||
2 | Intel 80286 és klónjai | 16 bites (30 bites virtuális) / 24 bites (szegmentált) | MMU, a védett mód és nagyobb címtartomány kezelésére. | |
3 (IA-32) | 1985 | Intel 80386 és klónjai, AMD Am386 | 32 bites (46 bites virtuális) / 32 bites | 32 bites utasításkészlet, memórialapozást támogató MMU. |
4 (FPU) | 1989 | Intel 80486 és klónjai, AMD Am486/Am5x86 | RISC-szerű futószalag-technika, integrált x87 FPU (80 bites), lapkán elhelyezett cache. | |
4/5 | 1997 | IDT/Centaur-C6, Cyrix III-Samuel, VIA C3-Samuel2 / VIA C3-Ezra (2001), VIA C7 (2005) | Sorrendi (in-order) végrehajtás, integrált FPU, néhány modellben belső L2 cache, MMX, SSE. | |
5 | 1993 | Pentium, Pentium MMX, Cyrix 5x86, Rise mP6 | Szuperskalár, 64 bites adatbusz, gyorsabb FPU, MMX (2×32 bit). | |
5/6 | 1996 | AMD K5, Nx586 (1994) | Mikroutasítás-fordítás. | |
6 | 1995 | Pentium Pro, Cyrix 6x86, Cyrix MII, Cyrix III-Joshua (2000) | mint fent / fizikailag 36 bites (PAE) | Mikroutasítás-fordítás, feltételes move utasítások, sorrenden kívüli végrehajtás (out-of-order execution), regiszter-átnevezés, spekulatív végrehajtás, PAE (Pentium Pro), tokon belüli L2 cache (Pentium Pro). |
1997 | AMD K6/-2/3, Pentium II/III | L3-cache támogatás, 3DNow!, SSE (2×64 bit). | ||
2003 | Pentium M, Intel Core (2006) | Alacsony TDP-re optimalizálva (kis hőtermelés). | ||
7 | 1999 | Athlon, Athlon XP | Szuperskalár FPU, három utasításdekóder, akár három x86-utasítás órajelütemenként. | |
2000 | Pentium 4 | Hosszú futószalag, magas órajel, SSE2, Hyper-threading. | ||
7/8 | 2000 | Transmeta Crusoe, Efficeon | VLIW felépítés, emulált x86 utasításvégrehajtás, lapkára épített memóriavezérlő. | |
2004 | Pentium 4 Prescott | 64 bites / fizikailag 40 bites az első AMD implementációban | Nagyon hosszú futószalag, nagyon magas órajel, SSE3, a 64 bites lehetőségek csak LGA775 foglalattal elérhetők. | |
2006 | Intel Core 2 | 64 bites (integer CPU), kis fogyasztás, többmagos, alacsony órajel, SSE4 (Penryn). | ||
2008 | VIA Nano | Sorrenden kívüli végrehajtás, szuperskalár, 64 bites (integer CPU), hardveresen támogatott titkosítás, nagyon kis fogyasztás, adaptív teljesítményszabályozás. | ||
8 (x86-64) | 2003 | Athlon 64, Opteron | x86-64 utasításkészlet (CPU fő integer mag), lapkára integrált memóriavezérlő, HyperTransport. | |
8/9 | 2007 | AMD Phenom | mint fent / fizikailag 48 bites az AMD Phenom-nál | Monolitikus négymagos, SSE4a, HyperTransport 3 vagy QuickPath, natív memóriavezérlő, lapkára épített L3 cache, moduláris. |
2008 | Intel Core i3/i5/i7, AMD Phenom II | |||
Intel Atom | Sorrendi végrehajtású de hosszú futószalagos, nagyon kis fogyasztás, egyes modellekben: 64 bites (integer CPU), lapkára épített GPU. | |||
2011 | AMD Bobcat, Llano | Sorrenden kívüli végrehajtás, 64 bites (integer CPU), lapkára épített GPU, kis fogyasztás (Bobcat). | ||
9 (GPU) | 2011 | Intel Sandy Bridge/Ivy Bridge, AMD Bulldozer and Trinity | SSE5/AVX (4×64 bit), magas szinten moduláris felépítés, lapkára integrált GPU. | |
2013 | Intel Larrabee | Nagyon széles vektoros feldolgozóegység, LRBni utasítások (8×64 bit). | ||
2014 | Intel Haswell | FMA3 utasítások. |
Az x86 architektúrát elsőként az 1978-ban kiadott Intel 8086-os processzorban használták. Ez egy teljesen 16 bites kialakítású processzor, amelyet a korábbi 8 bites 8008 és 8080 processzorok alapján fejlesztettek ki. Bár a 8086-os binárisan nem kompatibilis elődeivel, a kialakítása (utasításkészlete) olyan, hogy lehetővé tette az ezekre a processzorokra (és a 8085-ösre, ami a 8080-as egy változata) írt assembly nyelvű programok egyszerű, mechanikus átalakítását a megfelelő 8086 assembly kódra, ami vonzó szoftvermigrációs útvonalat kínált az ügyfeleknek. Azonban a 8086-os 16 bites külső adatbusza a hardver jelentős mértékű áttervezésével, további bonyodalmakkal és költségekkel járt. Ennek az akadálynak a leküzdésére a Intel piacra dobta a közel azonos felépítésű 8088-as processzort, ami lényegében egy 8 bites külső adatbusszal felépített 8086-os volt, lehetővé tette az egyszerűbb nyomtatott áramkörök és egyszerűbb (1 bites) DRAM memóriacsipek használatát, továbbá könnyebben illeszkedett az akkoriban megállapodott, olcsó 8 bites rendszerekhez és perifériákhoz. Más, nem technikai tényezők mellett, a fenti tulajdonságok nagy szerepet játszottak abban a döntésben, hogy az IBM új otthoni / személyi számítógépterveinek előkészítésekor a 8088-as processzort választotta ki a CPU szerepére, annak ellenére, hogy a Motorola, Zilog és National Semiconductor 16 bites processzorai és egyéb 8 bites processzorok is már korábban a piacon voltak. Az eredményül létrejött IBM PC lassan népszerűbb lett, mint a Z80-as processzoron alapuló CP/M rendszerek, az Apple II és más közkedvelt számítógépek, végül szinte a személyi számítógépek de facto szabványává vált. Ennek következményeként a 8088 és a rákövetkező hasonló architektúrájú processzorok átvették az uralmat a mikroprocesszor-piac nagy része fölött, a személyi számítógépeket kiszolgáló területen.
A fejlett, ám nem kompatibilis, 32 bites Intel 8800 (azaz iAPX 432) piaci bukása szintén a másik processzorvonal felemelkedését segítette, körülbelül az eredeti IBM PC-k indulásával egy időben, 1982 elején; az iAPX 432 nem tudott versenyezni az új, gyorsabb és kompatibilis 80286-os (másként iAPX 286) processzorral. (A 80286-ossal egy időben megjelentetett 80186-os processzort a beágyazott rendszerek számára tervezték, egy másik nagyobb piaci szegmenst céloztak meg vele). A 32 bites 8800-as bukása inkább a fejlettebb 8086-kompatibilis processzorok, pl. a 80386-os, fejlesztésére késztette az Intelt, ami a jól teljesítő 80286-os 32 bites kiterjesztése.
Az idők során az Intelen kívül sok más cég is tervezett és gyártott x86 processzorokat, pl. a következők: IBM, NEC,[12] AMD, Texas Instruments, STM, Fujitsu, Zhaoxin, DM&P (Vortex86), OKI, Siemens, Számos volt szovjet érdekszférabeli gyártó (Kvantor, Kvazar, Pravetz, MME stb.), Cyrix, Intersil, C&T, IIT, Mitsubishi, ALi, ULi, Oki, MTK, MHS, Kruger, Sony, Maxwell, Calmos, MC, Harris, NexGen, UMC, és az RDC. Ezek a cégek főleg személyi számítógépekbe szánt x86-os CPU-kat készítettek, de a beágyazott rendszerekhez szintén. Az ilyen x86-implementációk ritkán voltak egyszerű másolatok, gyakran különböző belső mikroarchitektúrákat és fizikai-elektronikai megoldásokat alkalmaztak ezekben. Természetesen a korai kompatibilis processzorok 16 bitesek voltak, a 32 bites kialakításokat csak később kezdték kifejleszteni. A személyi számítógépek piacán nagyobb mennyiségben csak 1990 körül kezdtek megjelenni, ezek i386- és i486-kompatibilis processzorok voltak, és gyakran az eredeti Intel-processzorokkal megegyező névvel kerültek forgalomba. Egyes cégek az x86-os processzorokon kívül x87-es processzorokat is gyártottak, például az ITT Corporation, National Semiconductor, ULSI System Technology és a Weitek.
A futószalagos i486-ot követően az Intel bevezette a Pentium márkanevet (ami a számokkal ellentétben már védjegyként bejegyezhető volt), az új szuperskalár x86-os típusok terveihez; ezután az „x86”-hoz hasonló jelöléseknek nem voltak jogi akadályai. Az IBM a Cyrix céggel együttműködve megalkotta az 5x86, majd a nagyon hatékony 6x86 (M1) és 6x86MX (MII) Cyrix termékvonalat – ezek voltak az első processzorok, amelyekben megvalósították a regiszterátnevezést, a spekulatív végrehajtás mellett. Az AMD eközben megtervezte és gyártani kezdte a fejlett de késve megjelent 5k86 (AMD K5) processzort, ami belsőleg éppen hogy az AMD korábbi saját 29k RISC kialakításán alapult; a NexGen Nx586-os processzorához hasonlóan ebben is dedikált futószalag-fokozatok dekódolják az x86 utasításokat egységes és könnyen kezelhető mikroutasításokká. Ez a módszer a mai napig alapvető a legtöbb x86-os felépítésben.
Az újonnan megjelent mikroprocesszorok gyakran nem voltak tökéletesek. A korai verziók közül néhány hőleadási problémákkal küzdött. A 6x86-osnak kisebb kompatibilitási problémái voltak, az Nx586-ban nem volt lebegőpontos egység (FPU) és eltérő foglalatba illeszkedett, míg a K5 teljesítménye némileg kiábrándítónak bizonyult, mikor végre megjelent. A fogyasztók ezek és különféle egyéb okok miatt hanyagolták a Pentium-alternatívákat, annak ellenére, hogy ezek között akadtak jobb teljesítményt nyújtó modellek is, mint pl. az AMD K5, amely igen jó Pentium-kompatibilitással rendelkezett, vagy a 6x86, amely az integer kód végrehajtásában lényegesen gyorsabb volt a Pentiumnál.[13] Az AMD később komoly versenyzővé lépett elő K6-os processzorsorozatának köszönhetően, amit aztán a nagy sikerű Athlon és Opteron processzorok követtek. A verseny további szereplői voltak a Centaur Technology (korábban IDT), a Rise Technology és a Transmeta. A VIA Technologies Centaur-tervezésű, kis fogyasztású C3 és C7 processzorai éveken át a piacon voltak. A Centaur tervezte legújabb VIA Nano a Centaur és a VIA első spekulatív végrehajtású szuperskalár processzora, amely érdekes módon az Intel Atom processzorral egy időben jelent meg, amely a P5 mikroarchitektúra óta az Intel első sorrendi végrehajtású processzora. A Zhaoxin egy kínai processzorcsalád, amely a VIA processzorokon alapszik.
Az x86 utasításkészlet-architektúra fejlődése során két alkalommal növekedett a szóhossz. 1985-ben az Intel kibocsátotta a 32 bites 80386-os (avagy i386-os) processzort, amely fokozatosan felváltotta a korábbi 16 bites processzorokat a számítógépekben (de nem a beágyazott rendszerekben); ez a kiterjesztett programozási modell kapta a későbbiekben az i386 architektúra nevet, az első megvalósításból eredően. Az Intel ezt később IA-32-re keresztelte, az ettől teljesen független IA-64 architektúra bevezetésekor. Az 1999–2003-as időszakban az AMD ezt a 32 bites architektúrát kiterjesztette 64 bitesre; a kiterjesztésre a korai dokumentumokban mint x86-64 hivatkozott, ám később áttért az AMD64 elnevezésre. Az Intel gyorsan átvette az AMD kiterjesztését, IA-32e jelöléssel, ezt később átnevezte EM64T-re, majd végül Intel 64-re. Az öt név közül a leggyakrabban használt talán az x86-64, bár a Microsoft és a Sun Microsystems használja az x64 jelölést is.