X86

x86 arba 80x86 yra bendras vardas procesorių architektūrai, kurią sukūrė Intel kompanija. Ši architektūra tapo dominuojanti stalinių, nešiojamų ir nedidelių serverių rinkoje nuo XX amžiaus devinto dešimtmečio, po to, kai IBM išleido savo pirmąjį IBM PC kompiuterį. Šiuo metu kompiuteriai su šios architektūros procesoriais daugiausia naudoja Microsoft Windows bei įvairias UNIX tipo operacines sistemas (įskaitant Linux). Nors daug šiuolaikinių architektūrų, pavyzdžiui, PowerPC, konkuruoja su x86 įvairiose nišose, tačiau nė viena iš jų nesugebėjo jos išstumti iš pagrindinių šių procesorių rinkų.
Architektūra pavadinta x86 vardu todėl, kad pirmieji procesoriai buvo identifikuojami pagal modelio numerį, kuris pasibaigdavo skaičiumi „86“: 8086, 80186, 80286, 386 ir 486. Dėl to, kad Intel negalėjo įgyti teisių į skaitinį prekės ženklą, vėliau procesoriai buvo pervadinti Pentium vardu, tačiau ankstesnė schema liko terminu, apibūdinančiu visą jų šeimą.
Kompiuterinei įrangai tobulėjant, architektūra du kartus padidino adresacijos dydį. 1985 32 bitų 386 pakeitė 16 bitų 286 serijos procesorius. Ši architektūra buvo pavadinta x86-32 arba IA-32. 2003 metais AMD pristatė Athlon 64 procesorius, kurie praplėtė architektūrą iki 64 bitų, žinoma x86-64, AMD64 (AMD pavadinimas), EM64T arba IA-32e (Intel pavadinimai) ir x64 (Microsoft ir Sun Microsystems bei kitų kompanijų neutralus vardinimas) vardais. Nereikėtų šios architektūros painioti su IA-64.

Istorija

Pirmą kartą x86 architektūra atsirado Intel 8086 procesoriuose 1978 metais. Tai buvo procesoriaus Intel 8080 tęsinys (kuris buvo Intel 4004 ir Intel 8008 tąsa) ir daugumą programų, parašytų 8080 asemblerio kalba, buvo galima mechaniškai perkelti į ekvivalenčias 8086 asemblerio programas. Ji trimis metais vėliau buvo pritaikyta (su viduje kiek paprastesniu Intel 8088 procesoriumi) IBM PC asmeniniuose kompiuteriuose. Dėl šios platformos populiarumo, ši architektūra tapo viena sėkmingiausių visų laikų procesoriaus architektūrų.
Be Intel procesorius, suderinamus su x86 architektūra, dar gamino Cyrix, NEC Corporation, IBM, IDT ir Transmeta. Labiausiai sėkminga kompanija, kuri gamina su Intel suderinamus x86 architektūros procesorius, yra AMD. Ji užima nors ir gerokai mažesnę už Intel, bet gana svarbią rinkos dalį. Dar viena žinomesnė kompanija, gaminanti šios architektūros procesorius, yra VIA Technologies su savo C3 ir C7 serija.
Intel kartu su HP pristatė IA-64, atskirą 64 bitų architektūrą, naudojamą Itanium procesoriuose. Tai visiškai nauja sistema, kuri neturi jokių panašumų su x86 architektūra, todėl nereikėtų jos painioti su IA-32, kuri sinonimas 32 bitų x86 architektūrai.

Dizainas

x86 yra kintančio instrukcijų ilgio CISC dizaino architektūra, atgaliniai suderinama su senesnėmis versijomis. Žodžiai yra saugomi little-endian seka. Instrukcijos vykdymo metu, dabartiniai x86 procesoriai naudoja keletą papildomų dekodavimo žingsnių, skaidančių instrukcijas į mažesnes dalis, micro-ops, kurie yra greitai įvykdomi RISC tipo mikro architektūros.
Intel 8086 ir 8088 turėjo 14 16 bitų registrų. Keturi iš jų (AX, BX, CX, DX) yra bendrosios paskirties (nors jie turi ir specialias funkcijas, pavyzdžiui, tik CX gali būti naudojamas ciklų (loop komandos) skaitikliu postūmio operacijose). Kiekvienas jų gali būti pasiektas kaip du atskiri baitai (pavyzdžiui, BX vyresnysis baitas žymimas BH, žemesnysis BL). Keturi segmento registrai (CS, DS, SS ir ES) naudojami apskaičiuoti atminties adresą bei nustatyti duomenų ir steko segmentų pradžią. Taip pat yra keturi indekso (adreso) registrai (BP, SP, DI ir SI), saugantys savyje poslinkio dydžius, naudojamus loginio adreso formavimui bei darbui su duomenų masyvais. FLAGS registras saugo savyje požymius ir būsenas, pavyzdžiui, perpildymas, dalyba iš nulio. Galiausiai IP registras nurodo į sekančią vykdomą komandą (komandų skaitiklis).
Tobulėjant x86, instrukcijų ir registrų skaičius išaugo, buvo įvesti papildomi SIMD (viena instrukcija, daugialypiai duomenys) instrukcijų rinkiniai: MMX, SSE, SSE2, SSE3, 3DNow! (tik AMD), SSSE3. Paskutiniai modeliai įvedė patobulinimus, palengvinančius x86 virtualizaciją.