X86 - X86

x86
DizaynerIntel, AMD
Bitlar16-bit, 32-bit va 64-bit
Tanishtirdi1978 (16-bit), 1985 (32-bit), 2003 (64-bit)
DizaynCISC
TuriRo'yxatdan o'tish - xotira
KodlashO'zgaruvchan (1 dan 15 baytgacha)
DallanishShart kodi
EndiannessOz
Sahifa hajmi8086i286: Yo'q
i386, i486: 4 KB sahifalar
P5 Pentium: 4 MB sahifalar qo'shildi
(Meros PAE: 4 KB → 2 MB)
x86-64: 1 Gb sahifalar qo'shildi
Kengaytmalarx87, IA-32, x86-64, MMX, 3DNow!, SSE, SSE2, SSE3, SSSE3, SSE4, SSE4.2, SSE5, AES-NI, CLMUL, RDRAND, SHA, MPX, SGX, XOP, F16C, ADX, BMI, FMA, AVX, AVX2, AVX512, VT-x, AMD-V, TSX, ASF
OchiqQisman. Ba'zi ilg'or xususiyatlar uchun x86 Inteldan litsenziyani talab qilishi mumkin; x86-64 AMD-dan qo'shimcha litsenziyani talab qilishi mumkin. 80486 protsessori bozorda 20 yildan ortiq vaqt davomida ishlab chiqarilgan[1] va shuning uchun patent talablari berilishi mumkin emas. Shuning uchun x86 arxitekturasining 586 gacha bo'lgan to'plami to'liq ochiq.
Ro'yxatdan o'tish kitoblari
Umumiy maqsad
  • 16-bit: 6 ta maxsus ajratilgan registr, BP va SP umumiy maqsadga muvofiq emas
  • 32-bit: 8 GPR, shu jumladan EBP va ESP
  • 64-bit: 16 GPR, shu jumladan RBP va RSP
Suzuvchi nuqta
  • 16-bit: ixtiyoriy alohida x87 FPU
  • 32-bit: ixtiyoriy ravishda alohida yoki integral x87 FPU, o'rnatilgan SSE2 keyingi protsessorlardagi birliklar
  • 64-bit: o'rnatilgan x87 va SSE2 birliklari, keyinchalik amalga oshirilishlari kengaytirilgan AVX2 va AVX512
X86 me'morchiligi dastlab 1978 yilda chiqarilgan Intel 8086 mikroprotsessor chipiga asoslangan.
Intel Core 2 Duo - x86 mos keladigan, 64 bitli ko'p yadroli protsessorning misoli
AMD Athlon (dastlabki versiyasi) - texnik jihatdan boshqacha, ammo to'liq mos keladigan x86 dasturi

x86 oila ko'rsatmalar to'plami arxitekturalari[a] dastlab tomonidan ishlab chiqilgan Intel asosida Intel 8086 mikroprotsessor va uning 8088 variant. 8086 1978 yilda to'liq ishlab chiqarilgan 16-bit Intelning kengaytmasi 8-bit 8080 mikroprotsessor, bilan xotira segmentatsiyasi oddiy 16-bitli manzil bilan qoplanishi mumkin bo'lganidan ko'proq xotiraga murojaat qilish uchun echim sifatida. "X86" atamasi paydo bo'ldi, chunki Intelning 8086 protsessorining bir nechta vorislari nomlari "86" bilan tugagan, shu jumladan 80186, 80286, 80386 va 80486 protsessorlar.

Yil davomida o'rnatilgan x86 yo'riqnomasiga deyarli to'liq va to'liq qo'shimchalar va kengaytmalar qo'shildi orqaga qarab muvofiqligi.[b] Arxitektura Intel protsessorlarida, Cyrix, AMD, VIA Technologies va boshqa ko'plab kompaniyalar; kabi ochiq dasturlar ham mavjud Zet SoC platforma (hozirda faol emas).[2] Shunga qaramay, ulardan faqat Intel, AMD, VIA Technologies va DM & P Electronics x86 me'moriy litsenziyalariga egalik qiling va ulardan faqat dastlabki ikkitasi zamonaviy 64-bitli dizaynlarni faol ravishda ishlab chiqaradi.

Bu atama sinonim emas IBM PC mosligi, chunki bu boshqalarning ko'pligini anglatadi kompyuter texnikasi; o'rnatilgan tizimlar, shuningdek, umumiy foydalanish uchun mo'ljallangan kompyuterlar, x86 chiplaridan foydalanilgan Kompyuterga mos bozor boshlanishidan oldin,[c] ulardan ba'zilari oldin IBM PC (1981) ning o'zi.

2018 yilga kelib, ko'pchilik shaxsiy kompyuterlar va noutbuklar sotilgan x86 arxitekturasiga asoslangan, kabi mobil toifalar smartfonlar yoki planshetlar ustunlik qiladi ARM; yuqori oxirida x86 hisoblash intensivligi ustunligini davom ettirmoqda ish stantsiyasi va bulutli hisoblash segmentlar.[3]

Umumiy nuqtai

1980-yillarda va 1990-yillarning boshlarida, qachon 8088 va 80286 hali ham keng tarqalgan bo'lib ishlatilgan, x86 atamasi odatda har qanday 8086 mos protsessorni ifodalagan. Ammo bugungi kunda x86 odatda bilan ikkilik mosligini anglatadi 32-bit ko'rsatmalar to'plami 80386. Buning sababi shundaki, ushbu ko'rsatmalar to'plami ko'plab zamonaviy operatsion tizimlar uchun eng past umumiy belgiga aylandi va ehtimol bu atama keng tarqalganligi sababli keyin ning kiritilishi 80386 1985 yilda.

8086 va 8088 modellarini joriy qilganidan bir necha yil o'tgach, Intel o'zining nomlash sxemasi va atamashunosligiga shuhratparast, ammo badbaxtlarning "iAPX" si sifatida biroz murakkablik qo'shdi. Intel iAPX 432 protsessor yanada muvaffaqiyatli bo'lgan 8086 mikrosxemalar oilasida sinab ko'rildi,[d] tizim darajasidagi prefiks sifatida qo'llaniladi. 8086 tizim, shu jumladan koprotsessorlar kabi 8087 va 8089, shuningdek, oddiyroq Intelga xos tizim chiplari,[e] shu bilan iAPX 86 deb ta'riflangan tizim.[4][f] Shuningdek, atamalar ham bo'lgan iRMX (operatsion tizimlar uchun), iSBC (bitta taxtali kompyuterlar uchun) va iSBX (8086 me'morchiligiga asoslangan multimodulli taxtalar uchun) - barchasi sarlavha ostida Mikrosistem 80.[5][6] Biroq, ushbu nomlash sxemasi ancha vaqtinchalik bo'lib, 1980 yillarning boshlarida bir necha yil davom etdi.[g]

Garchi 8086 asosan ishlab chiqilgan bo'lsa-da o'rnatilgan tizimlar va kichik ko'p foydalanuvchi yoki bitta foydalanuvchi kompyuterlar, asosan muvaffaqiyatli 8080 mos kelishiga javob sifatida Zilog Z80,[7] tez orada x86 liniyasi xususiyatlari va ishlov berish quvvati o'sdi. Bugungi kunda x86 statsionar va ko'chma shaxsiy kompyuterlarda hamma joyda mavjud bo'lib, u ham ishlatiladi o'rta darajadagi kompyuterlar, ish stantsiyalari, serverlar va eng yangi superkompyuter klasterlar ning TOP500 ro'yxat. Katta miqdor dasturiy ta'minot, shu jumladan katta ro'yxati x86 operatsion tizimlari x86 asosidagi apparatdan foydalanmoqda.

Zamonaviy x86 nisbatan kam uchraydi o'rnatilgan tizimlar ammo, va kichik kam quvvat ilovalar (kichik batareyalardan foydalangan holda), shuningdek, arzon mikroprotsessor bozorlari, masalan maishiy texnika va o'yinchoqlarda x86 mavjud emas.[h] Bu erda 8 va 16-bitli oddiy arxitekturalar keng tarqalgan, garchi x86 mos bo'lsa VIA C7, VIA Nano, AMD "s Geodeziya, Athlon Neo va Intel Atom 32- va misollar 64-bit ba'zilarida ishlatiladigan dizaynlar nisbatan kam quvvatli va arzon segmentlar.

To'g'ridan-to'g'ri birinchi oddiy 8-bitli mikroprotsessorlardan ishlab chiqilgan "nafis" x86 arxitekturasining bozor ustunligini tugatish uchun bir nechta urinishlar bo'lgan, shu jumladan Intelning o'zi ham. Bunga misollar iAPX 432 (dastlab "Intel 8800" deb nomlangan loyiha[8]), the Intel 960, Intel 860 va Intel / Hewlett-Packard Itanium me'morchilik. Biroq, x86 ning doimiy takomillashtirilishi mikro arxitekturalar, elektron tizim va yarimo'tkazgich ishlab chiqarish x86-ni ko'p segmentlarda almashtirishni qiyinlashtirishi mumkin. AMD-ning 64-bitli x86 kengaytmasi (Intel oxir-oqibat mos dizayn bilan javob berdi)[9] x86 mikrosxemalarining zamonaviy ko'p yadroli protsessorlar ko'lamida kengaytirilishi x86 ning belgilangan sanoat standartlarining doimiy ravishda takomillashtirilishi raqobatga mutlaqo yangi me'morchilikdan qanday qarshilik ko'rsatishi mumkinligi misolida ta'kidlanadi.[10]

Xronologiya

Quyidagi jadvalda protsessor modellari va x86 ning o'zgarishini amalga oshiradigan modellar seriyasi keltirilgan ko'rsatmalar to'plami, xronologik tartibda. Har bir satr elementi sezilarli darajada yaxshilangan yoki tijorat jihatdan muvaffaqiyatli protsessor bilan tavsiflanadi mikroarxitektura dizaynlar.

X86 protsessorlarning xronologiyasi
AvlodKirishTaniqli protsessor modellariManzil maydoniTaniqli xususiyatlar
LineerVirtualJismoniy
x861-chi1978Intel 8086, Intel 8088 (1979)16-bitNA20-bit16-bit ISA, IBM PC (8088), IBM PC / XT (8088)
1982Intel 80186, Intel 80188
NEC V20 / V30 (1983)
8086-2 ISA, o'rnatilgan (80186/80188)
2-chiIntel 80286 va klonlar30-bit24-bithimoyalangan rejim, IBM PC XT 286, IBM PC AT
3-chi (IA-32 )1985Intel 80386, AMD Am386 (1991)32-bit46-bit32-bit32-bit ISA, paging, IBM PS / 2
4-chi (quvur liniyasi, kesh)1989Intel 80486
Cyrix FZR 486S /D. LC (1992)
AMD Am486 (1993)/Am5x86 (1995)
quvur liniyasi, o'lishda x87 FPU (486DX), o'lishda kesh
5-chi
(Superskalar )
1993Intel Pentium, Pentium MMX (1996)Superskalar, 64-bit ma'lumotlar bazasi, tezroq FPU, MMX (Pentium MMX), APIC, SMP
1994NexGen Nx586
AMD 5k86 /K5 (1996)
Diskret mikroarxitektura (b-op tarjimasi)
1995Cyrix Cx5x86
Cyrix 6x86 / MX (1997) /MII (1998)
dinamik ijro
6-chi
(PAE, b-op tarjimasi)
1995Intel Pentium Pro36-bit (PAE )b-op tarjimasi, shartli ko'chirish ko'rsatmalari, dinamik ijro, spekulyativ ijro, 3 tomonlama x86 superscalar, superscalar FPU, PAE, chipdagi L2 kesh
1997Intel Pentium II, Pentium III (1999)
Celeron (1998), Xeon (1998)
paketli (Pentium II) yoki o'lik (Celeron) L2 kesh, SSE (Pentium III), SLOT 1, Soket 370 yoki SLOT 2 (Xeon)
1997AMD K6 /K6-2 (1998)/K6-III (1999)32-bit3DNow!, 3 darajali kesh tizimi (K6-III)
Kengaytirilgan platforma1999AMD Athlon, Athlon XP /Deputat (2001)
Duron (2000), Sempron (2004)
36-bitMMX +, 3DNow! +, Ikkita nasosli avtobus, Slot A yoki Soket A
2000Transmeta Kruzo32-bitCMS quvvatli x86 platforma protsessori, VLIW -128 yadroli, o'lik xotirani boshqaruvchi, o'ldiriladigan PCI ko'prigi mantig'i
Intel Pentium 436-bitSSE2, HTT (Northwood), NetBurst, to'rt nasosli avtobus, Trace Cache, Soket 478
2003Intel Pentium M
Intel Core (2006), Pentium Dual-Core (2007)
b-op termoyadroviy, XD bit (Dothan) (Intel Core "Yonah")
Transmeta EfficeonCMS 6.0.4, VLIW -256, NX bit, HT
IA-6464-bitli o'tish
1999 ~ 2005
2001Intel Itanium (2001 ~ 2017)52-bit64-bit EPIC arxitektura, 128 bitli VLIW ko'rsatmalar to'plami, x86 operatsion tizimlari va x86 dasturlarini (dastlabki avlodlar) yoqadigan IA-32 H / W apparati, x86 dasturlarini (Itanium 2) yoqadigan IA-32 EL dasturiy ta'minoti, Itanium registr fayllari x86-ga qayta joylashtirilgan registrlar
x86-6464-bit kengaytirilgan
2001 yildan beri
x86-64 x86-ning 64-bit kengaytirilgan arxitekturasi bo'lib, uning Legacy rejimi butun va o'zgartirilmagan x86 arxitekturasini saqlaydi. X86-64 protsessorlarining mahalliy arxitekturasi: 64-bit rejimida yashovchi, segmentatsiyaga kirish rejimining etishmasligi, 64-bitli me'moriy-ruxsat beruvchi chiziqli manzil maydonini taqdim etgan; 64 bitli rejim bilan bir qatorda moslik rejimida joylashgan IA-32 arxitekturasi aksariyat x86 dasturlarini qo'llab-quvvatlash uchun taqdim etilgan
2003Athlon 64 /Valyuta /X2 (2005), Opteron
Sempron (2004)/X2 (2008)
Turion 64 (2005)/X2 (2006)
40-bitAMD64 (faqat x86 protsessor sifatida taqdim etilgan ba'zi Sempron protsessorlari bundan mustasno), o'lik xotirani boshqaruvchi, HyperTransport, o'lik ikki yadroli (X2), AMD-V (Athlon 64 Orlean), Soket 754 /939 /940 yoki AM2
2004Pentium 4 (Preskott)
Celeron D., Pentium D (2005)
36-bitEM64T (Pentium 4 va Celeron D tanlangan modellarida yoqilgan), SSE3, 2-gen. NetBurst quvur liniyasi, ikki yadroli (o'lik: Pentium D 8xx, chipdagi: Pentium D 9xx), Intel VT (Pentium 4 6x2), rozetka LGA 775
2006Intel Core 2
Pentium Dual-Core (2007)
Celeron Dual-Core (2008)
Intel 64 (<< == EM64T), SSSE3 (65nm), keng dinamik ijro, b-op termoyadroviy, makro-op termoyadroviy 16 va 32 bitli rejimda,[11][12] chipdagi to'rt yadroli (Core 2 Quad), Smart Shared L2 kesh (Intel Core 2 "Merom")
2007AMD Phenom /II (2008)
Athlon II (2009), Turion II (2009)
48-bitMonolit to'rt yadroli (X4) / uch yadroli (X3), SSE4a, Virtuallashtirishni tezkor indekslash (RVI), HyperTransport 3, AM2 + yoki AM3
2008Intel Core 2 (45nm)40-bitSSE4.1
Intel Atomnetbuk yoki kam quvvatli aqlli qurilma protsessori, P54C yadrosi qayta ishlatilgan
Intel Core i7
Core i5 (2009), Core i3 (2010)
QuickPath, chipdagi GMCH (Klarkdeyl ), SSE4.2, Kengaytirilgan sahifalar jadvallari (EPT) virtualizatsiya uchun, 64-bit rejimida makro-op sintezi,[11][12] (Nehalem mikro arxitekturasiga ega Intel Xeon "Bloomfield")
VIA Nanoapparat asosida shifrlash; moslashuvchan quvvatni boshqarish
2010 AMD FX48-bitsekiz yadroli, CMT (Klasterli ko'p ipli), FMA, OpenCL, AM3 +
2011AMD APU A va E seriyalari (Llano )40-bito'lik GPGPU, PCI Express 2.0, Soket FM1
AMD APU C, E va Z seriyalari (Bobkat )36-bitkam quvvatli APU aqlli qurilmasi
Intel Core i3, Core i5 va Core i7
(Qumli ko'prik /Ayvi ko'prigi )
Ichki Ring aloqasi, dekodlangan b-op kesh, LGA 1155 rozetka
2012AMD APU seriyali (Buldozer, Uchlik va keyinroq)48-bitAVX, Buldozer asosidagi APU, Soket FM2 yoki Soket FM2 +
Intel Xeon Phi (Ritsarlar burchagi)XEON asosidagi tizim uchun PCI-E qo'shimcha karta koprotsessori, Manycore Chip, tartibda P54C, juda keng VPU (512-bit SSE), LRBni ko'rsatmalari (8 × 64-bit)
2013AMD Yaguar
(Athlon, Sempron)
SoC, o'yin konsoli va kam quvvatli aqlli qurilma protsessori
Intel Silvermont
(Atom, Celeron, Pentium)
36-bitSoC, past / o'ta past quvvatli aqlli qurilma protsessori
Intel Core i3, Core i5 va Core i7 (Xasuell /Broadwell )39-bitAVX2, FMA3, TSX, BMI1 va BMI2 ko'rsatmalar, LGA 1150 rozetka
2015Intel Broadwell-U
(Intel Core i3, Core i5, Core i7, Asosiy M, Pentium, Celeron )
SoC, chipdagi Broadwell-U PCH-LP (ko'p chipli modul)
2015/2016Intel Skylake /Kaby ko'li /Kannon ko‘li
(Intel Core i3, Core i5, Core i7 )
46-bitAVX-512 (Cannon Lake-U va Skylake ish stantsiyasi / server variantlari bilan cheklangan)
2016Intel Xeon Phi (Ritsarlar qo'nish)48-bitXeon tizimlari uchun ko'plab protsessor va protsessor, Airmont (Atom) asosidagi yadro
2016AMD Bristol tizmasi
(AMD (Pro) A6 / A8 / A10 / A12)
O'lik, SoC, AM4 rozetkaga o'rnatilgan FCH
2017AMD Ryzen seriyasi / AMD Epyc seriyasiAMD tomonidan SMT, chipdagi bir nechta o'liklarni amalga oshirish
2017Zhaoxin WuDaoKou (KX-5000, KH-20000)Zhaoksin birinchi yangi x86-64 arxitekturasi
2018/2019Intel Sunny Cove (Muzli Leyk-U va Y)57-bitIntel tomonidan iste'molchilar segmenti uchun AVX-512 birinchi qo'llanilishi. Vektorli asab tizimining ko'rsatmalarini qo'shish
Dasturiy ta'minotni taqlid qilish
ARM64
2017ARM64-da Windows 10Microsoft va Qualcomm o'rtasidagi hamkorlik Windows 10-ni ARM64 platformasiga CHPE emulyatori tomonidan qo'llab-quvvatlanadigan x86 dasturlari bilan 1709 yildan boshlab (16299.15)
DavrChiqarishCPU modellariJismoniy manzil maydoniYangi xususiyatlar

Tarix

Boshqa ishlab chiqaruvchilar

Am386, AMD tomonidan 1991 yilda chiqarilgan

Kabi kompaniyalar turli vaqtlarda IBM, NEC,[men] AMD, TI, STM, Fujitsu, OKI, Simens, Cyrix, Intersil, C&T, NexGen, UMC va DM & P loyihalashtirish yoki ishlab chiqarishni boshladi[j] x86 protsessorlar Shaxsiy kompyuterlar va o'rnatilgan tizimlar uchun mo'ljallangan (protsessorlar). Bunday x86 dasturlari kamdan-kam oddiy nusxalardir, lekin ko'pincha turli xil ichki nusxalardan foydalaniladi mikro arxitekturalar shuningdek, elektron va jismoniy darajadagi turli xil echimlar. Tabiiyki, erta mos keladigan mikroprotsessorlar 16-bit, 32-bitli dizaynlar esa keyinroq ishlab chiqilgan. Uchun shaxsiy kompyuter bozor, haqiqiy miqdorlar 1990 yilda paydo bo'la boshladi i386 va i486 ko'pincha Intelning asl chiplariga o'xshash nomlangan mos protsessorlar. X86 yoki ishlab chiqargan yoki ishlab chiqargan boshqa kompaniyalar x87 protsessorlarni o'z ichiga oladi ITT korporatsiyasi, Milliy yarim o'tkazgich, ULSI tizim texnologiyasi va Weitek.

To'liq kuzatib boring quvurli i486, Intel tanishtirdi Pentium tovar nomi (raqamlardan farqli o'laroq, bo'lishi mumkin) savdo markasi ) ularning yangi to'plami uchun superskalar x86 dizaynlari. X86 nomlash sxemasi qonuniy ravishda tozalanganligi sababli, boshqa x86 sotuvchilari o'zlarining x86-mos mahsulotlari uchun turli xil nomlarni tanlashlari kerak edi va dastlab ba'zilari raqamlash sxemasining o'zgarishini davom ettirishni tanladilar: IBM bilan hamkorlik qilgan Cyrix ishlab chiqarish 5x86 va keyin juda samarali 6x86 (M1) va 6x86 MX (MII ) birinchi x86 mikroprotsessorlari bo'lgan Cyrix konstruktsiyalari liniyalari qayta nomlashni ro'yxatdan o'tkazing yoqish spekulyativ ijro. Ayni paytda AMD ishlab chiqilgan va ishlab chiqarilgan, ammo kechiktirilgan 5k86 (K5 ), qaysi, ichki, AMD-ning oldingi versiyalari bilan chambarchas bog'liq edi 29K RISC dizayn; o'xshash NexGen "s Nx586, unda maxsus quvur bosqichlari x86 ko'rsatmalarini bir xil va osonlikcha ishlov beriladigan dekodlash strategiyasini qo'llagan mikro operatsiyalar, bugungi kungacha aksariyat x86 dizaynlari uchun asos bo'lib kelgan usul.

Ushbu mikroprotsessorlarning ba'zi dastlabki versiyalarida issiqlik tarqalishi muammolari bo'lgan. 6x86-ga, shuningdek, bir nechta kichik moslik muammolari ta'sir qildi Nx586 etishmadi a suzuvchi nuqta birligi (FPU) va (u holda juda muhim) pin mosligi, esa K5 u (oxir-oqibat) kiritilganda biroz umidsizlikka ega edi. Iste'molchilarning Pentium seriyasiga alternativalarni bilmasliklari ushbu dizaynlarning nisbatan muvaffaqiyatsiz bo'lishiga yordam berdi, garchi K5 juda yaxshi Pentium mosligi va 6x86 tamsayı kodidagi Pentiumdan sezilarli darajada tezroq edi.[k] AMD keyinchalik o'zini jiddiy raqib sifatida ko'rsatishga muvaffaq bo'ldi K6 juda muvaffaqiyatli yo'l bergan protsessorlar to'plami Athlon va Opteron. Kabi boshqa da'vogarlar ham bo'lgan Centaur Technology (avval IDT ), Rise Technology va Transmeta. VIA Technologies energiya tejamkorligi C3 va C7 tomonidan ishlab chiqilgan protsessorlar Kentavr kompaniyasi, ko'p yillar davomida sotilgan. Centaurning eng yangi dizayni VIA Nano, ularning birinchi protsessori superskalar va spekulyativ ijro. Bu Intelning birinchi "tartibda" protsessori bilan bir vaqtning o'zida taqdim etilgan P5 Pentium, Intel Atom.

So'z hajmining kengaytmalari

The ko'rsatmalar to'plami arxitekturasi ikki marta kattagacha kengaytirilgan so'z hajmi. 1985 yilda Intel 32-bitli 80386-ni chiqardi (keyinchalik i386 nomi bilan tanilgan), bu asta-sekin kompyuterlardagi 16-bitli chiplarni asta-sekin almashtirdi (garchi odatda bunday bo'lmasa ham o'rnatilgan tizimlar ) keyingi yillarda; Dastlab ushbu kengaytirilgan dasturlash modeli deb nomlangan i386 arxitekturasi (uning birinchi tatbiq etilishi kabi), ammo keyinchalik Intel uni dublyaj qildi IA-32 uni (aloqasiz) kiritishda IA-64 me'morchilik.

1999-2003 yillarda, AMD ushbu 32-bitli arxitekturani 64 bitgacha kengaytirdi va unga murojaat qildi x86-64 dastlabki hujjatlarda va keyinchalik AMD64. Tez orada Intel AMD-ning me'moriy kengaytmalarini IA-32e nomi bilan qabul qildi, keyinchalik EM64T nomidan foydalanib, nihoyat Intel 64 dan foydalandi. Microsoft va Quyosh mikrosistemalari /Oracle "x64" atamasidan foydalaning, ko'plari esa Linux tarqatish, va BSD-lar "amd64" atamasidan foydalaning. Masalan, Microsoft Windows o'zining 32 bitli versiyalarini "x86" va 64 bitli versiyalarini "x64" deb belgilaydi, 64 bitli Windows versiyalarining o'rnatish fayllarini "AMD64" deb nomlangan katalogga joylashtirish talab qilinadi.[13]

Me'morchilikning asosiy xususiyatlari

X86 arxitekturasi o'zgaruvchan buyruq uzunligidir, asosan "CISC "ta'kidlab dizayn orqaga qarab muvofiqligi. Ko'rsatmalar to'plami odatdagi CISC emas, lekin asosan oddiy sakkiz-bitning kengaytirilgan versiyasi 8008 va 8080 me'morchilik. Bayt-manzil yoqilgan va so'zlar xotirada saqlanadi ozgina endian bayt tartibi. Barcha to'g'ri so'z o'lchamlari uchun mos kelmagan manzillarga xotiradan foydalanishga ruxsat beriladi. Uchun eng katta mahalliy o'lcham tamsayı arifmetik va xotira manzillari (yoki ofsetlar ) me'morchilik avlodiga qarab 16, 32 yoki 64 bit (yangi protsessorlarga kichikroq tamsayılar uchun ham to'g'ridan-to'g'ri yordam kiradi). Bir nechta skalar qiymatlari bir vaqtning o'zida quyida tasvirlanganidek keyingi avlodlarda mavjud bo'lgan SIMD birligi orqali amalga oshirilishi mumkin.[l] Zudlik bilan manzilli ofsetlar va tezkor ma'lumotlar tez-tez uchraydigan holatlar yoki -128..127 oralig'i etarli bo'lgan holatlar uchun 8 bitli miqdorlarda ifodalanishi mumkin. Shuning uchun odatiy ko'rsatmalar uzunligi 2 yoki 3 baytdan iborat (garchi ba'zilari ancha uzun, ba'zilari esa bitta baytdan iborat).

Kodlash maydonini yanada tejash uchun aksariyat registrlar quyidagicha ifodalanadi opkodlar uch yoki to'rt bitdan foydalanib, ikkinchisi 64 bitli rejimda opcode prefiksi orqali, buyruqqa ko'pi bilan bitta operand xotira joyi bo'lishi mumkin.[m] Ammo, bu xotira operand ham bo'lishi mumkin boradigan joy (yoki birlashtirilgan manba va maqsad), boshqa operand esa manba, ham bo'lishi mumkin ro'yxatdan o'tish yoki darhol. Boshqa omillar qatorida, bu sakkiz bitli mashinalar bilan raqobatlashadigan va buyruqlar kesh xotirasidan samarali foydalanishni ta'minlaydigan kod hajmiga hissa qo'shadi. Nisbatan oz sonli umumiy registrlar (shuningdek, 8-bitlik ajdodlaridan meros bo'lib qolgan) registrga nisbatan manzilni (kichik zudlik bilan almashtirishlardan foydalangan holda) operandlarga, ayniqsa stekka kirishning muhim uslubiga aylantirdi. Shu sababli, kirishning ro'yxatdan o'tishi kabi tezkor kirish uchun juda ko'p mablag 'sarflandi, ya'ni kirishning yuqori darajadagi keshida mavjud bo'lgan ko'p holatlarda, ya'ni bitta tsikl ko'rsatmasi.

Suzuvchi nuqta va SIMD

Bag'ishlangan suzuvchi nuqta protsessori 80-bitli ichki registrlar bilan 8087, asl nusxasi uchun ishlab chiqilgan 8086. Keyinchalik ushbu mikroprotsessor kengaytirilgan holda ishlab chiqildi 80387, va keyinchalik protsessorlar a orqaga qarab mos keladi ushbu protsessorning asosiy protsessor bilan bir xil mikroprotsessordagi versiyasi. Bunga qo'shimcha ravishda, zamonaviy x86 dizaynlarida a SIMD -birlik (qarang SSE quyida) ko'rsatmalar (bittasi yoki ikkitasi) 128 bitli so'zlarga parallel ravishda ishlashi mumkin, ularning har biri ikkitadan yoki to'rttadan iborat suzuvchi nuqta raqamlari (har biri mos ravishda 64 yoki 32 bit) yoki muqobil ravishda 2, 4, 8 yoki 16 tamsayılar (har biri mos ravishda 64, 32, 16 yoki 8 bit).

Keng SIMD registrlarning mavjudligi shuni anglatadiki, mavjud x86 protsessorlari bitta buyruqqa 128 bitgacha bo'lgan xotira ma'lumotlarini yuklashi yoki saqlashi mumkin, shuningdek bitli operatsiyalarni bajarishi mumkin (garchi butun sonli arifmetik bo'lmasa ham)[n]) parallel ravishda 128-bitli to'liq miqdorlarda. Intel Qumli ko'prik protsessorlar qo'shildi Murakkab vektor kengaytmalari (AVX) ko'rsatmalari, SIMD registrlarini 256 bitgacha kengaytirish. Ritsarlar burchagi tomonidan amalga oshirilgan Intelning dastlabki ko'plab asosiy ko'rsatmalari Xeon Phi protsessorlar va AVX-512 Knights Landing Xeon Phi protsessorlari tomonidan amalga oshirilgan ko'rsatmalar va Skylake-X protsessorlar, 512 bitli keng SIMD registrlardan foydalaning.

Amaldagi dasturlar

Davomida ijro, hozirgi x86 protsessorlari ko'pgina ko'rsatmalarni mikro operatsiyalar deb nomlangan kichik qismlarga ajratish uchun bir nechta qo'shimcha dekodlash bosqichlaridan foydalanadilar. Keyin ular a boshqaruv bloki ularni x86-semantikaga muvofiq tamponlash va rejalashtirish, ularni qisman parallel ravishda bir nechta (ko'p yoki kam ixtisoslashgan) bittasi bajarishi mumkin. ijro birliklari. Ushbu zamonaviy x86 dizaynlari quvurli, superskalar, shuningdek, qodir ishdan chiqqan va spekulyativ ijro (orqali filialni bashorat qilish, qayta nomlashni ro'yxatdan o'tkazing va xotiraga bog'liqlikni bashorat qilish ), demak ular bir vaqtning o'zida bir nechta (qisman yoki to'liq) x86 ko'rsatmalarini bajarishi mumkin va buyruqlar oqimida berilgan tartibda emas.[14]Ba'zi Intel protsessorlari (Xeon Foster MP, biroz Pentium 4 va ba'zilari Nehalem va keyinroq Intel Core protsessorlar) va AMD protsessorlari (dan boshlab Zen ) ham qodir bir vaqtning o'zida ko'p ishlov berish ikkitasi bilan iplar per yadro (Xeon Phi har bir yadroda to'rtta ip bor). Ba'zi Intel protsessorlari qo'llab-quvvatlaydi tranzaksiya xotirasi (TSX ).

Kirish paytida, 1990-yillarning o'rtalarida, bu usul qisman marketing sabablari bilan, shuningdek, ushbu mikro operatsiyalar ba'zi xususiyatlarni RISC ko'rsatmalarining ayrim turlari bilan bo'lishishi sababli ba'zan "RISC yadrosi" yoki "RISC tarjimasi" deb nomlangan. Biroq, an'anaviy mikrokod (1950-yillardan beri ishlatilgan), shuningdek, tabiatan bir xil xususiyatlarning aksariyatini baham ko'radi; yangi usul asosan mikro operatsiyalarga tarjima asenkron tarzda amalga oshirilishidan farq qiladi. Ijro etiladigan birliklarni dekodlash bosqichlari bilan sinxronlashtirishga hojat yo'q (buferlangan) kod oqimini ko'proq tahlil qilish uchun imkoniyatlar ochadi va shuning uchun bir vaqtning o'zida bir nechta ijro birligini oziqlantirish bilan parallel ravishda bajarilishi mumkin bo'lgan operatsiyalarni aniqlashga imkon beradi.

Eng so'nggi protsessorlar, agar kerak bo'lsa, aksincha ishlaydi; ular ma'lum x86 ketma-ketliklarini (masalan, taqqoslash, so'ngra shartli sakrash kabi) murakkabroq mikro-opga birlashtiradilar, bu esa ijro modeliga yaxshiroq mos keladi va shu bilan tezroq yoki kamroq mashina resurslari bilan bajarilishi mumkin.

Ishlashni yaxshilashning yana bir usuli - bu dekodlangan mikro operatsiyalarni keshlash, shuning uchun protsessor dekodlangan mikro operatsiyalarga ularni qayta dekodlash o'rniga to'g'ridan-to'g'ri maxsus keshdan kira oladi. Intel ushbu yondashuvni Execution Trace Cache xususiyati bilan kuzatdi NetBurst mikroarxitektura (Pentium 4 protsessorlari uchun) va keyinchalik dekodlangan oqim buferida (Sendi ko'prigidan beri yadroli protsessorlar uchun).[15]

Transmeta ularda butunlay boshqacha usulni qo'llagan Kruzo x86 mos keladigan protsessorlar. Ular foydalangan ayni vaqtida x86 ko'rsatmalarini protsessorning asl nusxasiga o'tkazish uchun tarjima VLIW ko'rsatmalar to'plami. Transmeta, ularning yondashuvi ko'proq energiya tejaydigan dizaynlarni yaratishga imkon beradi, chunki protsessor an'anaviy x86 dasturlarining dekodlashning murakkab bosqichidan voz kechishi mumkin.

Segmentatsiya

1970-yillarning oxirlarida mini-kompyuterlar 16-bit 64- ga qarshi ishlaydilar.KB manzil chegarasi, chunki xotira arzonlashdi. Ba'zi minikompyuterlar shunga o'xshash PDP-11 bankni almashtirishning murakkab sxemalari yoki raqamli raqamlarda ishlatilgan VAX, 32-bitli manzil va ma'lumotlarni to'g'ridan-to'g'ri boshqarishi mumkin bo'lgan juda qimmat protsessorlarni qayta ishladi. Oddiydan ishlab chiqilgan asl 8086 8080 mikroprotsessor va birinchi navbatda juda kichik va arzon kompyuterlar va boshqa ixtisoslashgan qurilmalarga yo'naltirilgan bo'lib, buning o'rniga oddiy segment registrlari qabul qilindi, bu xotira manzilining kengligini atigi 4 bitga oshirdi. 64-KB manzilni 16 ga ko'paytirib, 20-bitli manzil jami bitta manzilga murojaat qilishi mumkin megabayt (1.048.576 bayt), bu o'sha paytda kichik kompyuter uchun juda katta miqdor edi. Segment registrlari tushunchasi ko'pgina meynfreymlar uchun yangilik emas edi, ular segment registrlarini turli xil vazifalarni tez almashtirish uchun ishlatgan. Amalda, x86-da, bu juda ko'p tanqid qilingan dastur bo'lib, u ko'plab umumiy dasturiy vazifalarni va kompilyatorlarni murakkablashtirdi. Biroq, tez orada arxitektura ruxsat berdi chiziqli 32-bitli adreslash (1985 yil oxirida 80386 dan boshlab), lekin asosiy aktyorlar (masalan Microsoft ) o'zlarining 16 bitli tizimlarini konvertatsiya qilish uchun bir necha yil davom etdi. Shuning uchun 80386 (va 80486) ko'p yillar davomida tezkor (ammo baribir 16-bitli) 8086 sifatida ishlatilgan.

Ma'lumotlar va kodlarni "yaqin" 16 bitli segmentlar ichida jami 1 KBdan 64 KB qism ichida boshqarish mumkin ediMB manzil maydoni yoki kompilyator 32-bit yordamida "uzoq" rejimda ishlashi mumkin segment: ofset 1 MB ga (faqat) erishadigan juftliklar. 1980-yillarning o'rtalarida bu juda cheklangan bo'lishi mumkin bo'lsa-da, u rivojlanayotgan kompyuterlar bozori uchun ishlaydi va dasturiy ta'minotni eskilaridan tarjima qilishni juda sodda qildi. 8008, 8080, 8085 va Z80 yangi protsessorga. 1985 yil davomida 16-bitli segmentli adreslash modeli 32-bitli ofset registrlarni joriy etish orqali samarali ravishda aniqlandi. 386 dizayn.

Yilda haqiqiy rejim, segmentatsiyalash orqali erishiladi siljish oxirgi 20-bitli manzilni olish uchun 4 bit qoldirgan va ofset qo'shgan segment manzili. Masalan, agar DS A000h, SI 5677h bo'lsa, DS: SI mutlaq DS × 10h + SI = A5677h manziliga ishora qiladi. Shunday qilib haqiqiy rejimdagi umumiy manzil maydoni 2 ga teng20 bayt yoki 1 MB, 1978 yil uchun juda ta'sirli ko'rsatkich. Barcha xotira manzillari ikkala segmentdan va ofsetdan iborat; kirishning har bir turi (kod, ma'lumotlar yoki stek) bilan bog'liq bo'lgan standart segment registri mavjud (ma'lumotlar uchun registr odatda DS, kod uchun CS va stack uchun SS). Ma'lumotlarga kirish uchun segment registri to'rt segmentli registrlardan birini ishlatish uchun aniq ko'rsatilishi mumkin (segmentni bekor qilish prefiksi yordamida).

Ushbu sxemada ikki xil segment / ofset juftligi bitta mutlaq joyga ishora qilishi mumkin. Shunday qilib, agar DS A111h, SI 4567h bo'lsa, DS: SI yuqoridagi kabi A5677h ga ishora qiladi. Ushbu sxema bir vaqtning o'zida to'rtdan ortiq segmentlardan foydalanishni imkonsiz qiladi. CS va SS dasturlarning to'g'ri ishlashi uchun juda muhimdir, shuning uchun dasturdan tashqari ma'lumotlar segmentlarini (yoki aniqrog'i, dasturning hozirda bajarilayotgan segmentidan tashqarida) yoki stekka yo'naltirish uchun faqat DS va ES ishlatilishi mumkin.

Yilda himoyalangan rejim, 80286-yilda kiritilgan segmentlar registri endi segment boshining fizik manzilini o'z ichiga olmaydi, lekin tizim sathidagi tuzilmani ko'rsatuvchi "selektor" ni o'z ichiga oladi. segment tavsiflovchi. Segment deskriptori segment boshining fizik manzilini, segment uzunligini va ushbu segmentga kirish ruxsatlarini o'z ichiga oladi. Ofset segmentning uzunligiga qarab tekshiriladi, ofsetlar segmentdan tashqaridagi joylarga ishora qiladi, bu esa istisnoga olib keladi. Segment ichidagi joylarga ishora qiluvchi ofsetlar ushbu ofsetga mos keladigan fizik manzilni olish uchun segment boshining fizik manzili bilan birlashtiriladi.

Segmentlangan tabiat dasturlash va kompilyator dizayni qiyinlashtirishi mumkin, chunki yaqin va uzoq ko'rsatkichlardan foydalanish ishlashga ta'sir qiladi.

Manzil rejimlari

Manzil rejimlari 16-bitli x86 protsessorlari uchun quyidagi formula bilan umumlashtirish mumkin:[16][17]

32-bitli x86 protsessorlari uchun manzillar,[18] va 64 bitli x86 protsessorlarda 32 bitli kod uchun quyidagi formula bilan umumlashtirish mumkin:[19]

64-bitli x86 protsessorlarda 64-bitli kod uchun manzillar rejimlarini quyidagi formula bilan umumlashtirish mumkin:[19]

Ko'rsatmaning nisbiy manzilini 64-bitli kodda (RIP + siljish, bu erda RIP ko'rsatma ko'rsatkichi registri ) amalga oshirilishini soddalashtiradi pozitsiyadan mustaqil kod (ishlatilganidek umumiy kutubxonalar ba'zi operatsion tizimlarda).

8086 edi 64 KB sakkiz bitli (yoki muqobil ravishda) 32 bitli 16-bitli so'z) I / O bo'sh joy va a 64 KB (bitta segment) suyakka tomonidan qo'llab-quvvatlanadigan xotirada kompyuter texnikasi. Yig'imga faqat so'zlarni (ikki bayt) surish mumkin. Yig'ma raqam bilan pastki manzillarga qarab o'sadi SS: SP eng so'nggi surilgan narsaga ishora. 256 bor uzilishlar, ham apparat, ham dasturiy ta'minot tomonidan chaqirilishi mumkin. Saqlash uchun stack yordamida uzilishlar kaskadga o'tishi mumkin qaytish manzili.

x86 registrlari

16-bit

Asl nusxa Intel 8086 va 8088 o'n to'rtta 16-bit registrlar. Ulardan to'rttasi (AX, BX, CX, DX) umumiy foydalanish registrlari (GPRs), garchi ularning har biri qo'shimcha maqsadga ega bo'lishi mumkin; masalan, hisoblagich sifatida faqat CX dan foydalanish mumkin pastadir ko'rsatma. Ularning har biriga ikkita alohida bayt sifatida kirish mumkin (shuning uchun BX ning yuqori baytiga BH va past baytiga BL sifatida kirish mumkin). Ikkala ko'rsatgich registrida maxsus rollar mavjud: SP (stack pointer) ning "tepasiga" ishora qiladi suyakka va BP (tayanch ko'rsatgichi) tez-tez stekning boshqa joyiga, odatda mahalliy o'zgaruvchilar ustiga ishora qilish uchun ishlatiladi (qarang ramka ko'rsatkichi ). SI, DI, BX va BP registrlari manzil registrlari, va shuningdek, massiv indeksatsiyasi uchun ishlatilishi mumkin.

Xotira manzilini shakllantirish uchun to'rtta segment registrlari (CS, DS, SS va ES) ishlatiladi. The BAYRAKLAR ro'yxatga olinadi o'z ichiga oladi bayroqlar kabi bayroq ko'tarish, to'lib toshgan bayroq va nol bayroq. Nihoyat, ko'rsatma ko'rsatgichi (IP) xotiradan olinadigan va keyin bajariladigan keyingi ko'rsatmaga ishora qiladi; ushbu reestrga dastur tomonidan to'g'ridan-to'g'ri kirish (o'qish yoki yozish) mumkin emas.[20]

The Intel 80186 va 80188 asosan mos ravishda yangilangan 8086 yoki 8088 protsessorlari bo'lib, chipdagi tashqi qurilmalar qo'shilgan va ular 8086 va 8088 bilan bir xil CPU registrlariga ega (atrof-muhit uchun interfeys registrlaridan tashqari).

8086, 8088, 80186 va 80188 ixtiyoriy suzuvchi nuqtali koprotsessordan foydalanishi mumkin, 8087. 8087 dasturchiga CPUning bir qismi sifatida ko'rinadi va st (0) dan st (7) gacha bo'lgan sakkizta 80 bitli keng registrlarni qo'shadi, ularning har biri ettita formatdagi raqamli ma'lumotlarni saqlashi mumkin: 32-, 64- yoki 80-bitli suzuvchi nuqta, 16-, 32- yoki 64-bit (ikkilik) tamsayı va 80-bitli qadoqlangan o'nlik tamsayı.[6]:S-6, S-13..S-15 Shuningdek, u orqali kirish imkoniga ega bo'lgan o'zining 16-bitli status registri mavjud fntsw buyrug'i va uni nusxalash orqali dallanish uchun uning bitlaridan shunchaki foydalanish odatiy holdir ichiga oddiy BAYRAKLAR.[21]

In Intel 80286, qo'llab quvvatlamoq himoyalangan rejim, uchta maxsus registrda identifikatorlar jadvalining manzillari (GDTR, LDTR, IDTR ) va vazifalarni almashtirish uchun to'rtinchi vazifa registri (TR) ishlatiladi. The 80287 80286 uchun suzuvchi nuqtali koprotsessor bo'lib, 8087 bilan bir xil ma'lumotlar formatiga ega registrlarga ega.

32-bit

X86-64 ko'rsatmalar to'plamida mavjud bo'lgan registrlar

32-bit paydo bo'lishi bilan 80386 protsessor, 16-bitli umumiy foydalanish registrlari, asosiy registrlar, indeks registrlari, ko'rsatma ko'rsatgichi va BAYRAKLAR ro'yxatga olinadi, lekin segment registrlari emas, 32 bitgacha kengaytirildi. Nomenklatura buni "" old qo'shimchasi bilan ifodalaydiE"(" kengaytirilgan "uchun) ro'yxatdan o'tgan nomlarga x86 yig'ilish tili. Shunday qilib, AX registri yangi 32-bitli EAX registrining eng past 16 bitiga, SI ESI ning eng past 16 bitiga to'g'ri keladi va hokazo. Umumiy maqsadli registrlar, asosiy registrlar va indeks registrlari adreslash rejimlarida baza sifatida ishlatilishi mumkin, va stack ko'rsatgichidan tashqari barcha registrlar adreslash rejimlarida indeks sifatida ishlatilishi mumkin.

Ikkita yangi segment registrlari (FS va GS) qo'shildi. Ko'proq registrlar, ko'rsatmalar va operandlar bilan mashina kodi formati kengaytirildi. Orqaga muvofiqlikni ta'minlash uchun bajariladigan kodga ega segmentlar 16 bitli yoki 32 bitli ko'rsatmalarni o'z ichiga olgan holda belgilanishi mumkin. Maxsus prefikslar 32-bitli ko'rsatmalarni 16-bitli segmentga yoki aksincha.

80386 ixtiyoriy suzuvchi nuqtali koprotsessorga ega edi 80387; sakkizta 80-bit kenglikdagi registrlari bor edi: st (0) dan st (7) gacha,[22] 8087 va 80287 singari. 80386 80287 koprotsessoridan ham foydalanishi mumkin.[23] Bilan 80486 va keyingi barcha x86 modellari, suzuvchi nuqtali ishlov berish birligi (FPU) chipga o'rnatilgan.

The Pentium MMX sakkizta 64-bitli MMX tamsayı registrlarini qo'shdi (MMX0-dan MMX7-ga, ular 80-bitli FPU to'plami bilan pastki bitlarni baham ko'radi).[24] Bilan Pentium III, Intel 32-bit qo'shdi SIMD kengaytmalarini oqimlash (SSE) boshqaruv / holat registri (MXCSR) va sakkizta 128 bitli SSE suzuvchi nuqta registri (XMM0 dan XMM7 gacha).[25]

64-bit

Dan boshlab AMD Opteron protsessor, x86 arxitekturasi 32-bitli registrlarni 64-bitli registrlarga 16 dan 32-bitli kengaytma qanday amalga oshirilganiga o'xshash tarzda kengaytirdi. An R-prefix ("registr" uchun) 64-bitli registrlarni (RAX, RBX, RCX, RDX, RSI, RDI, RBP, RSP, RFLAGS, RIP) va sakkizta qo'shimcha 64-bitli umumiy registrlarni (R8-R15) ning yaratilishida ham kiritilgan x86-64. Biroq, ushbu kengaytmalar faqat 64 bitli rejimda ishlaydi, bu faqat mavjud bo'lgan ikkita rejimdan biridir uzoq rejim. Manzil berish rejimlari 32-bit rejimidan keskin o'zgarmadi, faqat adreslash 64 bitgacha uzaytirildi, virtual manzillar endi 64 bitgacha kengaytirildi (virtual manzillarda rejim bitlarini taqiqlash uchun) va boshqa selektor tafsilotlari keskin kamaytirildi . Bundan tashqari, RIP-ga nisbatan xotira ma'lumotlariga ruxsat berish uchun manzil rejimi qo'shildi ( ko'rsatma ko'rsatgichi ) amalga oshirilishini engillashtirish uchun position-independent code, used in shared libraries in some operating systems.

128 bit

SIMD registers XMM0–XMM15.

256-bit

SIMD registers YMM0–YMM15.

512-bit

SIMD registers ZMM0–ZMM31.

Miscellaneous/special purpose

x86 processors that have a himoyalangan rejim, i.e. the 80286 and later processors, also have three descriptor registers (GDTR, LDTR, IDTR ) and a task register (TR).

32-bit x86 processors (starting with the 80386) also include various special/miscellaneous registers such as control registers (CR0 through 4, CR8 for 64-bit only), debug registers (DR0 through 3, plus 6 and 7), test registers (TR3 through 7; 80486 only), and model-specific registers (MSRs, appearing with the Pentium[o]).

AVX-512 has eight extra 64-bit mask registers for selecting elements in a ZMM.

Maqsad

Although the main registers (with the exception of the instruction pointer) are "general-purpose" in the 32-bit and 64-bit versions of the instruction set and can be used for anything, it was originally envisioned that they be used for the following purposes:

  • AL/AH/AX/EAX/RAX: Accumulator
  • BL/BH/BX/EBX/RBX: Base index (for use with arrays)
  • CL/CH/CX/ECX/RCX: Counter (for use with loops and strings)
  • DL/DH/DX/EDX/RDX: Extend the precision of the accumulator (e.g. combine 32-bit EAX and EDX for 64-bit integer operations in 32-bit code)
  • SI/ESI/RSI: Source index uchun string operatsiyalar.
  • DI/EDI/RDI: Destination index for string operations.
  • SP/ESP/RSP: Stack pointer for top address of the stack.
  • BP/EBP/RBP: Stack base pointer for holding the address of the current stack frame.
  • IP/EIP/RIP: Instruction pointer. Holds the program counter, the address of next instruction.

Segment registers:

  • CS: Code
  • DS: Data
  • SS: Stack
  • ES: Extra data
  • FS: Extra data #2
  • GS: Extra data #3

No particular purposes were envisioned for the other 8 registers available only in 64-bit mode.

Some instructions compile and execute more efficiently when using these registers for their designed purpose. For example, using AL as an accumulator and adding an immediate byte value to it produces the efficient add to AL opcode of 04h, whilst using the BL register produces the generic and longer add to register opcode of 80C3h. Another example is double precision division and multiplication that works specifically with the AX and DX registers.

Modern compilers benefited from the introduction of the sib byte (scale-index-base byte) that allows registers to be treated uniformly (minikompyuter -like). However, using the sib byte universally is non-optimal, as it produces longer encodings than only using it selectively when necessary. (The main benefit of the sib byte is the orthogonality and more powerful addressing modes it provides, which make it possible to save instructions and the use of registers for address calculations such as scaling an index.) Some special instructions lost priority in the hardware design and became slower than equivalent small code sequences. A notable example is the LODSW instruction.

Tuzilishi

General Purpose Registers (A, B, C and D)
645648403224168
R?X
E?X
?X
?H?L
64-bit mode-only General Purpose Registers (R8, R9, R10, R11, R12, R13, R14, R15)
645648403224168
?
?D
?W
?B
Segment Registers (C, D, S, E, F and G)
168
?S
Pointer Registers (S and B)
645648403224168
R?P
E?P
?P
?PL

Note: The ?PL registers are only available in 64-bit mode.

Index Registers (S and D)
645648403224168
R?I
E?I
?I
?IL

Note: The ?IL registers are only available in 64-bit mode.

Instruction Pointer Register (I)
645648403224168
JOYI JANNATDA BO'LSIN
EIP
IP

Operating modes

Real mode

Real Address mode,[26] commonly called Real mode, is an operating mode of 8086 and later x86-compatible CPU. Real mode is characterized by a 20-bit segmented memory address space (meaning that only 1 MiB of memory can be addressed—actually, slightly more[p]), direct software access to peripheral hardware, and no concept of memory protection yoki multitasking at the hardware level. All x86 CPUs in the 80286 series and later start up in real mode at power-on; 80186 CPUs and earlier had only one operational mode, which is equivalent to real mode in later chips. (On the IBM PC platform, direct software access to the IBM BIOS routines is available only in real mode, since BIOS is written for real mode. However, this is not a characteristic of the x86 CPU but of the IBM BIOS design.)

In order to use more than 64 KB of memory, the segment registers must be used. This created great complications for compiler implementors who introduced odd pointer modes such as "near", "far" and "huge" to leverage the implicit nature of segmented architecture to different degrees, with some pointers containing 16-bit offsets within implied segments and other pointers containing segment addresses and offsets within segments. It is technically possible to use up to 256 KB of memory for code and data, with up to 64 KB for code, by setting all four segment registers once and then only using 16-bit offsets (optionally with default-segment override prefixes) to address memory, but this puts substantialrestrictions on the way data can be addressed and memory operands can be combined, and it violates the architectural intent of the Intel designers, which is for separate data items (e.g. arrays, structures, code units) to be contained in separate segments and addressed by their own segment addresses, in new programs that are not ported from earlier 8-bit processors with 16-bit address spaces.

Himoyalangan rejim

In addition to real mode, the Intel 80286 supports protected mode, expanding addressable physical memory to 16 MB and addressable virtual xotira to 1 GB, and providing protected memory, which prevents programs from corrupting one another. This is done by using the segment registers only for storing an index into a descriptor table that is stored in memory. There are two such tables, the Global Descriptor Table (GDT) and the Local Descriptor Table (LDT), each holding up to 8192 segment descriptors, each segment giving access to 64 KB of memory. In the 80286, a segment descriptor provides a 24-bit base address, and this base address is added to a 16-bit offset to create an absolute address. The base address from the table fulfills the same role that the literal value of the segment register fulfills in real mode; the segment registers have been converted from direct registers to indirect registers. Each segment can be assigned one of four uzuk levels used for hardware-based kompyuter xavfsizligi. Each segment descriptor also contains a segment limit field which specifies the maximum offset that may be used with the segment. Because offsets are 16 bits, segments are still limited to 64 KB each in 80286 protected mode.[27]

Each time a segment register is loaded in protected mode, the 80286 must read a 6-byte segment descriptor from memory into a set of hidden internal registers. Therefore, loading segment registers is much slower in protected mode than in real mode, and changing segments very frequently is to be avoided. Actual memory operations using protected mode segments are not slowed much because the 80286 and later have hardware to check the offset against the segment limit in parallel with instruction execution.

The Intel 80386 extended offsets and also the segment limit field in each segment descriptor to 32 bits, enabling a segment to span the entire memory space. It also introduced support in protected mode for xotira, a mechanism making it possible to use paged virtual xotira (with 4 KB page size). Paging allows the CPU to map any page of the virtual memory space to any page of the physical memory space. To do this, it uses additional mapping tables in memory called page tables. Protected mode on the 80386 can operate with paging either enabled or disabled; the segmentation mechanism is always active and generates virtual addresses that are then mapped by the paging mechanism if it is enabled. The segmentation mechanism can also be effectively disabled by setting all segments to have a base address of 0 and size limit equal to the whole address space; this also requires a minimally-sized segment descriptor table of only four descriptors (since the FS and GS segments need not be used).[q]

Paging is used extensively by modern multitasking operating systems. Linux, 386BSD va Windows NT were developed for the 386 because it was the first Intel architecture CPU to support paging and 32-bit segment offsets. The 386 architecture became the basis of all further development in the x86 series.

x86 processors that support protected mode boot into real mode for backward compatibility with the older 8086 class of processors. Upon power-on (a.k.a. booting ), the processor initializes in real mode, and then begins executing instructions. Operating system boot code, which might be stored in ROM, may place the processor into the himoyalangan rejim to enable paging and other features. The instruction set in protected mode is similar to that used in real mode. However, certain constraints that apply to real mode (such as not being able to use ax,cx,dx in addressing[iqtibos kerak ]) do not apply in protected mode. Conversely, segment arithmetic, a common practice in real mode code, is not allowed in protected mode.

Virtual 8086 mode

There is also a sub-mode of operation in 32-bit protected mode (a.k.a. 80386 protected mode) called virtual 8086 rejimi, shuningdek, nomi bilan tanilgan V86 mode. This is basically a special hybrid operating mode that allows real mode programs and operating systems to run while under the control of a protected mode supervisor operating system. This allows for a great deal of flexibility in running both protected mode programs and real mode programs simultaneously. This mode is exclusively available for the 32-bit version of protected mode; it does not exist in the 16-bit version of protected mode, or in long mode.

Long mode

In the mid 1990s, it was obvious that the 32-bit address space of the x86 architecture was limiting its performance in applications requiring large data sets. A 32-bit address space would allow the processor to directly address only 4 GB of data, a size surpassed by applications such as video processing va database engines. Using 64-bit addresses, it is possible to directly address 16EiB of data, although most 64-bit architectures do not support access to the full 64-bit address space; for example, AMD64 supports only 48 bits from a 64-bit address, split into four paging levels.

1999 yilda, AMD published a (nearly) complete specification for a 64-bit extension of the x86 architecture which they called x86-64 with claimed intentions to produce. That design is currently used in almost all x86 processors, with some exceptions intended for o'rnatilgan tizimlar.

Mass-produced x86-64 chips for the general market were available four years later, in 2003, after the time was spent for working prototypes to be tested and refined; about the same time, the initial name x86-64 was changed to AMD64. The success of the AMD64 line of processors coupled with lukewarm reception of the IA-64 architecture forced Intel to release its own implementation of the AMD64 instruction set. Intel had previously implemented support for AMD64[28] but opted not to enable it in hopes that AMD would not bring AMD64 to market before Itanium's new IA-64 instruction set was widely adopted. It branded its implementation of AMD64 as EM64T, and later re-branded it Intel 64.

In its literature and product version names, Microsoft and Sun refer to AMD64/Intel 64 collectively as x64 in the Windows and Solaris operating systems. Linux tarqatish refer to it either as "x86-64", its variant "x86_64", or "amd64". BSD systems use "amd64" while macOS uses "x86_64".

Long mode is mostly an extension of the 32-bit instruction set, but unlike the 16–to–32-bit transition, many instructions were dropped in the 64-bit mode. This does not affect actual binary backward compatibility (which would execute legacy code in other modes that retain support for those instructions), but it changes the way assembler and compilers for new code have to work.

This was the first time that a katta extension of the x86 architecture was initiated and originated by a manufacturer other than Intel. It was also the first time that Intel accepted technology of this nature from an outside source.

Kengaytmalar

Suzuvchi nuqta birligi

Early x86 processors could be extended with suzuvchi nuqta hardware in the form of a series of floating point raqamli co-processors with names like 8087, 80287 and 80387, abbreviated x87. This was also known as the NPX (Numeric Processor eXtension), an apt name since the coprocessors, while used mainly for floating-point calculations, also performed integer operations on both binary and decimal formats. With very few exceptions, the 80486 and subsequent x86 processors then integrated this x87 functionality on chip which made the x87 instructions a amalda integral part of the x86 instruction set.

Each x87 register, known as ST(0) through ST(7), is 80 bits wide and stores numbers in the IEEE floating-point standard double extended precision format. These registers are organized as a stack with ST(0) as the top. This was done in order to conserve opcode space, and the registers are therefore randomly accessible only for either operand in a register-to-register instruction; ST0 must always be one of the two operands, either the source or the destination, regardless of whether the other operand is ST(x) or a memory operand. However, random access to the stack registers can be obtained through an instruction which exchanges any specified ST(x) with ST(0).

The operations include arithmetic and transcendental functions, including trigonometric and exponential functions, as well as instructions that load common constants (such as 0; 1; e, the base of the natural logarithm; log2(10); and log10(2)) into one of the stack registers. While the integer capability is often overlooked, the x87 can operate on larger integers with a single instruction than the 8086, 80286, 80386, or any x86 CPU without to 64-bit extensions can, and repeated integer calculations even on small values (e.g. 16-bit) can be accelerated by executing integer instructions on the x86 CPU and the x87 in parallel. (The x86 CPU keeps running while the x87 coprocessor calculates, and the x87 sets a signal to the x86 when it is finished or interrupts the x86 if it needs attention because of an error.)

MMX

MMX is a SIMD instruction set designed by Intel and introduced in 1997 for the Pentium MMX microprocessor. The MMX instruction set was developed from a similar concept first used on the Intel i860. It is supported on most subsequent IA-32 processors by Intel and other vendors. MMX is typically used for video processing (in multimedia applications, for instance).

MMX added 8 new "registers" to the architecture, known as MM0 through MM7 (henceforth referred to as MMn). In reality, these new "registers" were just aliases for the existing x87 FPU stack registers. Hence, anything that was done to the floating point stack would also affect the MMX registers. Unlike the FP stack, these MMn registers were fixed, not relative, and therefore they were randomly accessible. The instruction set did not adopt the stack-like semantics so that existing operating systems could still correctly save and restore the register state when multitasking without modifications.

Each of the MMn registers are 64-bit integers. However, one of the main concepts of the MMX instruction set is the concept of packed data types, which means instead of using the whole register for a single 64-bit integer (quadword ), one may use it to contain two 32-bit integers (doubleword ), four 16-bit integers (so'z ) or eight 8-bit integers (byte ). Given that the MMX's 64-bit MMn registers are aliased to the FPU stack and each of the floating point registers are 80 bits wide, the upper 16 bits of the floating point registers are unused in MMX. These bits are set to all ones by any MMX instruction, which correspond to the floating point representation of NaNs or infinities.

3DNow!

In 1997 AMD introduced 3DNow!. The introduction of this technology coincided with the rise of 3D entertainment applications and was designed to improve the CPU's vektorli ishlov berish performance of graphic-intensive applications. 3D video game developers and 3D graphics hardware vendors use 3DNow! to enhance their performance on AMD's K6 va Athlon series of processors.

3DNow! was designed to be the natural evolution of MMX from integers to floating point. As such, it uses exactly the same register naming convention as MMX, that is MM0 through MM7. The only difference is that instead of packing integers into these registers, two single precision floating point numbers are packed into each register. The advantage of aliasing the FPU registers is that the same instruction and data structures used to save the state of the FPU registers can also be used to save 3DNow! register states. Thus no special modifications are required to be made to operating systems which would otherwise not know about them.

SSE and AVX

In 1999, Intel introduced the Streaming SIMD Extensions (SSE) ko'rsatmalar to'plami, following in 2000 with SSE2. The first addition allowed offloading of basic floating-point operations from the x87 stack and the second made MMX almost obsolete and allowed the instructions to be realistically targeted by conventional compilers. Introduced in 2004 along with the Preskott revision of the Pentium 4 processor, SSE3 added specific memory and ip -handling instructions to boost the performance of Intel's HyperThreading texnologiya. AMD licensed the SSE3 instruction set and implemented most of the SSE3 instructions for its revision E and later Athlon 64 processors. The Athlon 64 does not support HyperThreading and lacks those SSE3 instructions used only for HyperThreading.

SSE discarded all legacy connections to the FPU stack. This also meant that this instruction set discarded all legacy connections to previous generations of SIMD instruction sets like MMX. But it freed the designers up, allowing them to use larger registers, not limited by the size of the FPU registers. The designers created eight 128-bit registers, named XMM0 through XMM7. (Eslatma: in AMD64, the number of SSE XMM registers has been increased from 8 to 16.) However, the downside was that operating systems had to have an awareness of this new set of instructions in order to be able to save their register states. So Intel created a slightly modified version of Protected mode, called Enhanced mode which enables the usage of SSE instructions, whereas they stay disabled in regular Protected mode. An OS that is aware of SSE will activate Enhanced mode, whereas an unaware OS will only enter into traditional Protected mode.

SSE is a SIMD instruction set that works only on floating point values, like 3DNow!. However, unlike 3DNow! it severs all legacy connection to the FPU stack. Because it has larger registers than 3DNow!, SSE can pack twice the number of single precision floats into its registers. The original SSE was limited to only single-precision numbers, like 3DNow!. The SSE2 introduced the capability to pack double precision numbers too, which 3DNow! had no possibility of doing since a double precision number is 64-bit in size which would be the full size of a single 3DNow! MMn register. At 128 bits, the SSE XMMn registers could pack two double precision floats into one register. Thus SSE2 is much more suitable for scientific calculations than either SSE1 or 3DNow!, which were limited to only single precision. SSE3 does not introduce any additional registers.

The Advanced Vector Extensions (AVX) doubled the size of SSE registers to 256-bit YMM registers. It also introduced the VEX coding scheme to accommodate the larger registers, plus a few instructions to permute elements. AVX2 did not introduce extra registers, but was notable for the addition for masking, gather, and shuffle instructions.

AVX-512 features yet another expansion to 32 512-bit ZMM registers and a new EVEX scheme. Unlike its predecessors featuring a monolithic extension, it is divided into many subsets that specific models of CPUs can choose to implement.

Physical Address Extension (PAE)

Physical Address Extension or PAE was first added in the Intel Pentium Pro, va keyinchalik AMD in the Athlon processors,[29] to allow up to 64 GB of RAM to be addressed. Without PAE, physical RAM in 32-bit protected mode is usually limited to 4 GB. PAE defines a different page table structure with wider page table entries and a third level of page table, allowing additional bits of physical address. Although the initial implementations on 32-bit processors theoretically supported up to 64 GB of RAM, chipset and other platform limitations often restricted what could actually be used. x86-64 processors define page table structures that theoretically allow up to 52 bits of physical address, although again, chipset and other platform concerns (like the number of DIMM slots available, and the maximum RAM possible per DIMM) prevent such a large physical address space to be realized. On x86-64 processors PAE mode must be active before the switch to long mode, and must remain active while long mode is active, so while in long mode there is no "non-PAE" mode. PAE mode does not affect the width of linear or virtual addresses.

x86-64

Yilda superkompyuter klasterlar (as tracked by TOP 500 data and visualized on the diagram above, last updated 2013), the appearance of 64-bit extensions for the x86 architecture enabled 64-bit x86 processors by AMD and Intel (olive-drab with small open circles, and red with small open circles, in the diagram, respectively) to replace most RISC processor architectures previously used in such systems (including PA-RISC, SPARC, Alfa and others), as well as 32-bit x86 (green on the diagram), even though Intel itself initially tried unsuccessfully to replace x86 with a new incompatible 64-bit architecture in the Itanium protsessor. The main non-x86 architecture which is still used, as of 2014, in supercomputing clusters is the Quvvat ISA tomonidan ishlatilgan IBM POWER microprocessors (blue with diamond tiling in the diagram), with SPARC as a distant second.

By the 2000s, 32-bit x86 processors' limitations in memory addressing were an obstacle to their utilization in high-performance computing clusters and powerful desktop workstations. The aged 32-bit x86 was competing with much more advanced 64-bit RISC architectures which could address much more memory. Intel and the whole x86 ecosystem needed 64-bit memory addressing if x86 was to survive the 64-bit computing era, as workstation and desktop software applications were soon to start hitting the limitations present in 32-bit memory addressing. However, Intel felt that it was the right time to make a bold step and use the transition to 64-bit desktop computers for a transition away from the x86 architecture in general, an experiment which ultimately failed.

In 2001, Intel attempted to introduce a non-x86 64-bit architecture named IA-64 unda Itanium processor, initially aiming for the high-performance computing market, hoping that it would eventually replace the 32-bit x86.[30] While IA-64 was incompatible with x86, the Itanium processor did provide taqlid qilish capabilities for translating x86 instructions into IA-64, but this affected the performance of x86 programs so badly that it was rarely, if ever, actually useful to the users: programmers should rewrite x86 programs for the IA-64 architecture or their performance on Itanium would be orders of magnitude worse than on a true x86 processor. The market rejected the Itanium processor since it broke backward compatibility and preferred to continue using x86 chips, and very few programs were rewritten for IA-64.

AMD decided to take another path toward 64-bit memory addressing, making sure backward compatibility would not suffer. In April 2003, AMD released the first x86 processor with 64-bit general-purpose registers, the Opteron, capable of addressing much more than 4 GB of virtual memory using the new x86-64 extension (also known as AMD64 or x64). The 64-bit extensions to the x86 architecture were enabled only in the newly introduced long mode, therefore 32-bit and 16-bit applications and operating systems could simply continue using an AMD64 processor in protected or other modes, without even the slightest sacrifice of performance[31] and with full compatibility back to the original instructions of the 16-bit Intel 8086.[32](p13–14) The market responded positively, adopting the 64-bit AMD processors for both high-performance applications and business or home computers.

Seeing the market rejecting the incompatible Itanium processor and Microsoft supporting AMD64, Intel had to respond and introduced its own x86-64 processor, the "Preskott " Pentium 4, in July 2004.[33] As a result, the Itanium processor with its IA-64 instruction set is rarely used and x86, through its x86-64 incarnation, is still the dominant CPU architecture in non-embedded computers.

x86-64 also introduced the NX bit, which offers some protection against security bugs caused by buffer overruns.

As a result of AMD's 64-bit contribution to the x86 lineage and its subsequent acceptance by Intel, the 64-bit RISC architectures ceased to be a threat to the x86 ecosystem and almost disappeared from the workstation market. x86-64 began to be utilized in powerful supercomputers (in its AMD Opteron va Intel Xeon incarnations), a market which was previously the natural habitat for 64-bit RISC designs (such as the IBM POWER microprocessors yoki SPARC processors). The great leap toward 64-bit computing and the maintenance of backward compatibility with 32-bit and 16-bit software enabled the x86 architecture to become an extremely flexible platform today, with x86 chips being utilized from small low-power systems (for example, Intel Quark va Intel Atom ) to fast gaming desktop computers (for example, Intel Core i7 va AMD FX /Ryzen ), and even dominate large supercomputing klasterlar, effectively leaving only the ARM 32-bit and 64-bit RISC architecture as a competitor in the smartfon va planshet bozor.

Virtuallashtirish

Prior to 2005 x86 architecture processors were unable to meet the Popek and Goldberg requirements - a specification for virtualization created in 1974 by Gerald J. Popek va Robert P. Goldberg. However both proprietary and open-source x86 virtualization hypervisor products were developed using software-based virtualization. Proprietary systems include Hyper-V, Parallels Workstation, VMware ESX, VMware Workstation, VMware Workstation Player va Windows Virtual PC, esa free and open-source systems include QEMU, KQEMU, VirtualBox va Xen.

The introduction of the AMD-V and Intel VT-x instruction sets in 2005 allowed x86 processors to meet the Popek and Goldberg virtualization requirements.[34]

Shuningdek qarang

Izohlar

  1. ^ Dan farqli o'laroq microarchitecture (and specific electronic and physical implementation) used for a specific microprocessor design.
  2. ^ Intel abandoned its "x86" naming scheme with the P5 Pentium during 1993 (as numbers could not be trademarked). Biroq, x86 atamasi texniklar, kompilyatorlar va boshqalar orasida allaqachon o'rnatilgan.
  3. ^ The GRID kompas Masalan, noutbuk.
  4. ^ Shu jumladan 8088, 80186, 80188 va 80286 protsessorlar.
  5. ^ Bunday tizim odatdagi standart aralashmani ham o'z ichiga olgan 7400 seriyali qo'llab-quvvatlash komponentlari, shu jumladan multipleksorlar, buferlar va yopishqoq mantiq.
  6. ^ Ning haqiqiy ma'nosi iAPX edi Intel Advanced Performance Architectureyoki ba'zan Intel Advanced Processor Architecture.
  7. ^ taxminan 1981 yil oxiridan 1984 yil boshigacha
  8. ^ O'rnatilgan protsessor bozorida 25 dan ortiq turli xil aholi mavjud me'morchilik, narxlarning sezgirligi, kam quvvat va apparatning soddaligi talablari tufayli x86 dan oshib ketadi.
  9. ^ NEC V20 va V30, shuningdek, ushbu mikroprotsessorlar bilan jihozlangan shaxsiy kompyuterlarga CP / M dasturlarini to'liq tezlikda ishlashiga imkon beradigan eski 8080 yo'riqnomasini taqdim etdi (ya'ni, 8080 dasturiy ta'minotni simulyatsiya qilish zarurati yo'q).
  10. ^ Fabless kompaniyalar chipni ishlab chiqdilar va uni ishlab chiqarish uchun boshqa kompaniya bilan shartnoma tuzdilar, fabbed kompaniyalari ham dizaynni, ham ishlab chiqarishni o'zlari bajaradilar. Ba'zi kompaniyalar fabbed ishlab chiqaruvchisi sifatida ish boshladilar va keyinchalik afsonasiz dizaynerlarga aylandilar, masalan AMD.
  11. ^ Ammo u sekinroq FPU-ga ega edi, ammo bu Cyrix x86 protsessorlari uchun tez suzuvchi nuqta birliklarining dizayneri sifatida ish boshlaganligi sababli biroz kulgili.
  12. ^ 16-bitli va 32-bitli mikroprotsessorlar 1978 va 1985-yillarda mos ravishda kiritilgan; 64-bitli rejalar 1999 yil davomida e'lon qilingan va 2003 yildan va undan keyin bosqichma-bosqich joriy qilingan.
  13. ^ Kabi ba'zi "CISC" dizaynlari PDP-11, ikkitadan foydalanishi mumkin.
  14. ^ Buning sababi shundaki, butun sonli arifmetika keyingi bitlar orasida (oddiy bitli operatsiyalardan farqli o'laroq) ko'chiradi.
  15. ^ Pentium® II protsessorida kiritilgan yadro rejimi tizimining xizmat ko'rsatuvchi ishlov beruvchisi va tegishli yadro to'plami ko'rsatgichining manzilini saqlaydigan SYSENTER_EIP_MSR va SYSENTER_ESP_MSR ikkita qiziqtiradigan MSR hisoblanadi. Tizimni ishga tushirish paytida boshlangan SYSENTER_EIP_MSR va SYSENTER_ESP_MSR SYSENTER (Intel) yoki SYSCALL (AMD) ko'rsatmalari tomonidan tezkor tizim qo'ng'iroqlariga erishish uchun ishlatiladi, bu avval ishlatilgan dasturiy ta'minotni to'xtatish usulidan taxminan uch baravar tezroq.
  16. ^ Segmentlangan manzil 16-bitli qismga ko'paytirilgan 16-bitli ofsetning yig'indisi va 16-bitli ofset bo'lgani uchun, maksimal manzil 1,114,095 (10FFEF olti), adreslash qobiliyati uchun 1,114,096 bayt = 1 MB + 65,520 bayt. 80286 dan oldin x86 protsessorlarda atigi 20 ta fizik manzil satri (manzil bit signallari) bo'lgan, shuning uchun manzilning 21-biti, bit 20, tashlab qo'yilgan va 1 MB dan yuqori bo'lgan manzillar manzil maydonining pastki uchi (manzildan boshlab) nol). 80286-dan boshlab, barcha x86 protsessorlarda kamida 24 ta jismoniy manzil satrlari mavjud va hisoblangan manzilning 20-biti haqiqiy rejimda manzil avtobusiga chiqariladi, bu esa protsessorga x86 segmentli manzil bilan to'liq 1 114 096 baytga murojaat qilishga imkon beradi. Mashhur IBM PC platformasida 21-manzil bitini o'chirib qo'yish uchun o'zgaruvchan apparat 80286 yoki undan keyingi versiyalari bo'lgan mashinalarga qo'shildi, shunda 8088/8086 asosidagi modellar uchun mo'ljallangan barcha dasturlar ishlashi mumkin, yangi dasturiy ta'minot esa "yuqori" dan foydalanishi mumkin. haqiqiy rejimdagi xotira va himoyalangan rejimda to'liq 16 MB yoki undan kattaroq manzil maydoni - A20 eshigiga qarang.
  17. ^ Jadvalning yuqori qismida qo'shimcha deskriptor yozuvi ham talab qilinadi, chunki jadval noldan boshlanadi, lekin segment registriga yuklanishi mumkin bo'lgan minimal descriptor indekslari 1 ga teng; 0 qiymati hech qanday segmentga ishora qiluvchi segment registrini ifodalash uchun saqlanadi.

Adabiyotlar

  1. ^ Pris, Deyv (1989 yil 11-may). "80486 32-bitli protsessor chip zichligi va ishlash ko'rsatkichlari bo'yicha yangi yutuqlarni buzmoqda. (Intel Corp.) (mahsulot e'lonlari) EDN" (Press-reliz).
  2. ^ "Zet - x86 (IA-32) ochiq dasturi :: Umumiy ma'lumot". opencores.org. 2013 yil 4-noyabr. Olingan 5-yanvar, 2014.
  3. ^ Brandon, Jonathan (2015 yil 15-aprel). "X86-dan tashqaridagi bulut: Qanday qadimgi arxitekturalar qaytib kelmoqda". businesscloudnews.com. Business Cloud yangiliklari. Olingan 23-noyabr, 2020. Ma'lumotlar markazida x86 ustunligiga qaramay, so'nggi ikki yil ichida ARM kabi x86 bo'lmagan arxitektura atrofida ishlab chiqarilgan shovqin sotuvchilarni e'tiborsiz qoldirish qiyin ...
  4. ^ Jon S Dvorak. "Intel iAPX432-da nima yuz berdi?". Dvorak.org. Olingan 18 aprel, 2014.
  5. ^ iAPX 286 dasturchi ma'lumotnomasi (PDF). Intel. 1983 yil.
  6. ^ a b iAPX 86, 88 Foydalanuvchilar uchun qo'llanma (PDF). Intel. 1981 yil avgust.
  7. ^ Benj Edvards (2008 yil 16-iyun). "Standartning tug'ilishi: Intel 8086 mikroprotsessori". PCWorld. Olingan 14 sentyabr, 2014.
  8. ^ Stenli Mazor (2010 yil yanvar-mart). "Intelning 8086". IEEE Hisoblash tarixi yilnomalari. 32 (1): 75–79. doi:10.1109 / MAHC.2010.22.
  9. ^ "AMD mikroprotsessor forumida yangi texnologiyalarni ochib beradi" (Matbuot xabari). AMD. 1999 yil 5 oktyabr. Arxivlangan asl nusxasi 2000 yil 2 martda. "Qayta-qayta protsessor me'morlari bejirim x86 arxitekturasini ko'rib chiqdilar va uni eng so'nggi yangiliklarga moslashtirish uchun uni cho'zib bo'lmasligini e'lon qilishdi", deydi "Insight 64" ning asosiy tahlilchisi Natan Brukvud.
  10. ^ "Microsoft Intel Itanium-ni qo'llab-quvvatlashni to'xtatadi". Olingan 14 sentyabr, 2014.
  11. ^ a b "Intel 64 va IA-32 Architectures optimallashtirish bo'yicha qo'llanma" (PDF). Intel. Sentyabr 2019. 3.4.2.2 Makro-termoyadroviy uchun optimallashtirish.
  12. ^ a b Tuman, Agner. "Intel, AMD va VIA protsessorlarining mikrimitekturasi" (PDF). p. 107. Core2 faqat 16-bit va 32-bit rejimida makro-op sintezni amalga oshirishi mumkin. Core Nehalem buni 64-bitli rejimda ham bajarishi mumkin.
  13. ^ "Windows x64 Edition-ga asoslangan kompyuterlar uchun o'rnatish va o'rnatish masalalari". Olingan 14 sentyabr, 2014.
  14. ^ "Protsessorlar - Intel protsessorlari qanday adreslash rejimidan foydalanadilar?". Olingan 14 sentyabr, 2014.
  15. ^ "DSB kalitlari". Intel VTune kuchaytirgichi 2013. Intel. Olingan 26 avgust, 2013.
  16. ^ "8086 oilaviy foydalanuvchi qo'llanmasi" (PDF). Intel korporatsiyasi. Oktyabr 1979. 2-69 betlar.
  17. ^ "iAPX 286 dasturchi uchun qo'llanma" (PDF). Intel korporatsiyasi. 1983. 2.4.3 Xotiraga murojaat qilish usullari.
  18. ^ 80386 Dasturchi uchun qo'llanma (PDF). Intel korporatsiyasi. 1986. 2.5.3.2 SAMARALI-MANZIL KOMPYUTERI.
  19. ^ a b Intel® 64 va IA-32 Architectures Software Developer qo'llanmasi, 1-jild: Asosiy me'morchilik. Intel korporatsiyasi. Mart 2018. 3-bob.
  20. ^ "X86 yig'ish bo'yicha qo'llanma". Cs.virginia.edu. 2013 yil 11 sentyabr. Olingan 6 fevral, 2014.
  21. ^ "FSTSW / FNSTSW - Store x87 FPU Status Word". Ko'rsatmaning FNSTSW AX shakli asosan shartli tarmoqlanishda ishlatiladi ...
  22. ^ Intel 64 va IA-32 Architectures Software Developer uchun qo'llanma 1-jild: Asosiy me'morchilik (PDF). Intel. 2013 yil mart. 8-bob.
  23. ^ "Intel 80287 oilasi". CPU-dunyo.
  24. ^ Intel 64 va IA-32 Architectures Software Developer qo'llanmasi 1-jild: Asosiy me'morchilik (PDF). Intel. 2013 yil mart. 9-bob.
  25. ^ Intel 64 va IA-32 Architectures Software Developer uchun qo'llanma 1-jild: Asosiy me'morchilik (PDF). Intel. 2013 yil mart. 10-bob.
  26. ^ iAPX 286 dasturchi ma'lumotnomasi (PDF). Intel. 1983 yil. 1.2-bo'lim, "Ish rejimlari". Olingan 27 yanvar, 2014.
  27. ^ iAPX 286 dasturchi ma'lumotnomasi (PDF). Intel. 1983 yil. 6-bob, "Xotirani boshqarish va virtual adreslash". Olingan 27 yanvar, 2014.
  28. ^ Intelning Yamhill texnologiyasi: x86-64 mos | Geek.com
  29. ^ AMD, Inc. (fevral 2002). "E ilova" (PDF). AMD Athlon ™ protsessori x86 kodini optimallashtirish bo'yicha qo'llanma (Reviziya K nashri). p. 250. Olingan 13 aprel, 2017. Sahifalar jadvali yozuvining PCD va PWT bitlaridan tashkil topgan 2 bitli indeks PAE (sahifa manzili kengaytmalari) yoqilganda yoki PDE katta sahifani ta'riflamaganida to'rtta PAT registri maydonlaridan birini tanlash uchun ishlatiladi.
  30. ^ Manek Dubash (2006 yil 20-iyul). "Intel Itaniumdan voz kechadimi?". Techworld. Olingan 19 dekabr, 2010. Intel tomonidan x86 mahsulot qatorining o'rnini bosuvchi vosita sifatida ilgari surilganidan so'ng, Itaniumga bo'lgan umidlar yaxshilandi.
  31. ^ IBM korporatsiyasi (2007 yil 6 sentyabr). "IBM WebSphere Application Server-ning 64-bitli ishlashi aniqlangan" (PDF). p. 14. Olingan 9 aprel, 2010. 5, 6 va 7-rasmlarda, shuningdek, WASning 32-bitli versiyasi POWER va x86-64 platformalarida dasturiy ta'minotning to'liq ishlashida ishlaydigan dasturlar ko'rsatilgan. Ba'zi 64-bitli protsessor arxitekturalaridan farqli o'laroq, POWER va x86-64 apparatlari 32-bitli rejimni taqlid qilmaydi. Shuning uchun 64-bitli funktsiyalardan foyda ko'rmaydigan dasturlar yuqorida aytib o'tilgan 64-bitli platformalarda ishlaydigan WebSphere-ning 32-bitli versiyasida to'liq ishlashi bilan ishlashi mumkin.
  32. ^ AMD korporatsiyasi (2012 yil sentyabr). "2-jild: tizim dasturlash" (PDF). AMD64 Arxitektura dasturchisi qo'llanmasi. AMD korporatsiyasi. Olingan 17 fevral, 2014.
  33. ^ Charli Demerjian (2003 yil 26 sentyabr). "Nima uchun Intelning Prescott kompaniyasi AMD64 kengaytmalaridan foydalanadi". Surishtiruvchi. Olingan 7 oktyabr, 2009.
  34. ^ Adams, Keyt; Agesen, Ole (2006 yil 21-25 oktyabr). X86 virtualizatsiyasi uchun dasturiy ta'minot va texnik vositalarni taqqoslash (PDF). Dasturlash tillari va operatsion tizimlarini me'moriy qo'llab-quvvatlash bo'yicha xalqaro konferentsiya materiallari, San-Xose, Kaliforniya, AQSh, 2006. ACM 1-59593-451-0 / 06/0010. Olingan 22 dekabr, 2006.

Qo'shimcha o'qish

Tashqi havolalar