8086 нь анхны x86 процессор байсан - тэр үед Intel аль хэдийн 4004, 8008, 8080, 8085 загваруудыг гаргасан. Энэхүү 16 битийн процессор нь 20 битийн гадаад хаягийн автобусаар 1 МБ санах ойтой ажиллах боломжтой. IBM-ийн сонгосон цагийн хурд (4.77 МГц) нэлээд бага байсан бөгөөд карьерынхаа төгсгөлд процессор 10 МГц давтамжтайгаар ажиллаж байв.

Эхний компьютерууд нь зөвхөн 8 битийн гадаад мэдээллийн автобустай 8088 процессорын деривативыг ашигласан. Сонирхолтой нь, Америкийн шаттлуудын удирдлагын системүүд нь 8086 процессор ашигладаг бөгөөд НАСА 2002 онд Intel үүнийг хийхээ больсон тул eBay-ээр дамжуулан процессор худалдаж авах шаардлагатай болсон.

Intel 8086
нууц нэр Үгүй
Гарсан огноо 1979
Архитектур 16 бит
Өгөгдлийн автобус 16 бит
Автобусны хаяг 20 бит
Макс. Санах ой 1 MB
L1 кэш Үгүй ээ
L2 кэш Үгүй ээ
Цагийн давтамж 4.77-10 МГц
ФСБ Тэнцүү CPU давтамж
FPU 8087
SIMD Үгүй ээ
Процессын технологи 3000 нм
Транзисторын тоо 29 000
эрчим хүчний хэрэглээ Үгүй
Хүчдэл 5 В
Кристал талбай 16 мм²
залгуур 40 зүү


1982 онд гарсан 80286 нь ижил цагийн хурдтайгаар 8086-аас 3.6 дахин хурдан байсан. Энэ нь 16 MB хүртэлх санах ойтой ажиллах боломжтой боловч 286 нь 16 битийн процессор хэвээр байв. Энэ нь санах ойн удирдлагын нэгж (MMU)-тай болсон анхны x86 процессор байв виртуал санах ой. 8086 шиг процессор нь хөвөгч цэгийн нэгж (FPU) агуулаагүй боловч x87 сопроцессорын чип (80287) ашиглаж болно. Өрсөлдөгчид 25 МГц-т хүрч чадсан ч Intel 80286-г 12.5 МГц-ийн дээд хурдтайгаар гаргасан.

Intel 80286
нууц нэр Үгүй
Гарсан огноо 1982
Архитектур 16 бит
Өгөгдлийн автобус 16 бит
Автобусны хаяг 24 бит
Макс. Санах ой 16 MB
L1 кэш Үгүй ээ
L2 кэш Үгүй ээ
Цагийн давтамж 6-12 МГц
ФСБ CPU-ийн давтамжтай тэнцүү
FPU 80287
SIMD Үгүй ээ
Процессын технологи 1500 нм
Транзисторын тоо 134 000
эрчим хүчний хэрэглээ Үгүй
Хүчдэл 5 В
Кристал талбай 49 мм²
залгуур 68 зүү

386: 32 бит ба кэштэй


Intel 80836 нь 32 битийн архитектуртай анхны x86 процессор байв. Энэ процессорын хэд хэдэн хувилбар гарсан. Хамгийн алдартай хоёр нь 16 битийн өгөгдлийн автобус ашигласан 386 SX (Single-word eXternal) болон 32 битийн өгөгдлийн автобус ашигласан 386 DX (Давхар үгт eXternal) юм. Өөр хоёр хувилбарыг тэмдэглэж болно: SL, кэшийн дэмжлэгтэй анхны x86 процессор (гадаад) болон сансрын программд ашигласан 386EX (жишээлбэл, Хаббл телескоп энэ процессорыг ашигладаг).

Intel 80386DX
нууц нэр P3
Гарсан огноо 1985
Архитектур 32 бит
Өгөгдлийн автобус 32 бит
Автобусны хаяг 32 бит
Макс. Санах ой 4096 MB
L1 кэш 0 кб (заримдаа хянагч байдаг)
L2 кэш Үгүй ээ
Цагийн давтамж 16-33 МГц
ФСБ CPU-ийн давтамжтай тэнцүү
FPU 80387
SIMD Үгүй ээ
Процессын технологи 1500-1000 нм
Транзисторын тоо 275 000
эрчим хүчний хэрэглээ 2W @ 33MHz
Хүчдэл 5 В
Кристал талбай 42 мм² @ 1 мкм
залгуур 132 харилцагч

486 процессор нь бүхэл бүтэн үеийн компьютертэй танилцах эхлэл байсан тул олон хүний ​​​​хувьд онцлох тэмдэг болжээ. Үнэн хэрэгтээ алдартай 486 DX2/66 урт хугацаатоглоомчдын хувьд хамгийн бага тохиргоо гэж үзсэн. 1989 онд гарсан энэхүү процессор нь чип дээрх FPU, өгөгдлийн кэш гэх мэт олон сонирхолтой шинэ боломжуудтай бөгөөд анх удаа үржүүлэгчийг нэвтрүүлсэн. x87 сопроцессорыг 486 DX (SX биш) шугамд суурилуулсан. 8 KB L1 кэшийг процессортой нэгтгэсэн (эхлээд бичих / бичих, дараа нь арай өндөр гүйцэтгэлтэй буцаан бичих / буцааж бичих). L2 кэшийг эх хавтан дээр нэмэх боломжтой байсан (энэ нь автобусны давтамж дээр ажилласан).

Хоёр дахь үеийн 486 процессор нь CPU үржүүлэгчтэй болсон, учир нь процессор нь FSB-ээс хурдан байсан тул DX2 (2x үржүүлэгч) ба DX4 (3x үржүүлэгч) хувилбарууд гарч ирэв. Өөр нэг анекдот: 486SX-ийн FPU нэрээр зарагдсан "487SX" нь үнэн хэрэгтээ анхны CPU-г салгаж, сольсон бүрэн хэмжээний 486DX процессор байсан.

Intel 80486DX
нууц нэр P4, P24, P24C
Гарсан огноо 1989
Архитектур 32 бит
Өгөгдлийн автобус 32 бит
Автобусны хаяг 32 бит
Макс. Санах ой 4096 MB
L1 кэш 8 кб
L2 кэш Дээр эх хавтан(FSB давтамж дээр)
Цагийн давтамж 16-100 МГц
ФСБ 16-50 МГц
FPU болор дээр
SIMD Үгүй ээ
Процессын технологи 1000-800 нм
Транзисторын тоо 1 185 000
эрчим хүчний хэрэглээ Үгүй
Хүчдэл 5V - 3.3V
Кристал талбай 81 - 67 мм²
залгуур 168 харилцагч

DX4 нь 16 кБ кэштэй ба түүнээс дээш транзистортой - 1,6 сая. 76 мм² талбай бүхий 600 нм процессор үйлдвэрлэсэн энэхүү процессор нь анхны 486 (3,3 В)-ээс бага эрчим хүч зарцуулсан.


1993 онд танилцуулагдсан Pentium нь олон шалтгааны улмаас сонирхолтой байсан. Энэ нь Intel зөвхөн тоон дээр барааны тэмдэг тавьж чаддаггүй тул уламжлалт загварын дугаараас татгалзаж, анхаарал татахуйц нэрийг сонгосон анхны x86 процессор байв. Үүнээс гадна процессор нь алдаагаараа алдартай болсон. Эхний үеийн Pentium дээр зарим хэлтсийн үйл ажиллагаа буруу үр дүнд хүрсэн. Intel процессороо сольсон ч компани маш их хохирол амссан. Маш ховор тохиолддог алдаа нь мэдээллийн технологийн хэвлэлд жинхэнэ сенсаци үүсгэв.

Pentium нь гурван өөр шугамаар зарагдсан бөгөөд эхнийх нь CPU үржүүлэгчгүй, хоёр дахь нь үржүүлэгчтэй (алдарт Pentium 166-г оруулаад), сүүлчийнх нь MMX нэртэй x86 SIMD зааврын багцтай байв. Pentium MMX-ийн L1 кэшийн хэмжээ нэмэгдэж, бусад жижиг сайжруулалтууд хийгдсэн. Pentium нь хоёр зааврыг зэрэгцүүлэн гүйцэтгэх чадвартай Intel-ийн анхны x86 процессор байв. Эдгээр процессоруудын хувьд L2 кэш нь эх хавтан дээр байрладаг байсан (энэ нь FSB давтамж дээр ажилладаг).

Intel Pentium (MMX)
нууц нэр P5, P54
Гарсан огноо 1993 1997
Архитектур 32 бит 32 бит
Өгөгдлийн автобус 64 бит 64 бит
Автобусны хаяг 32 бит 32 бит
Макс. Санах ой 4096 MB 4096 MB
L1 кэш 8 + 8 кб 16 + 16 кб
L2 кэш Эх хавтан (FSB давтамж дээр)
Цагийн давтамж 60-200 МГц 133-300 МГц
ФСБ 50-66 МГц 60-66 МГц
FPU болор дээр болор дээр
SIMD Үгүй ээ MMX
Процессын технологи 800-600-350 нм 350 нм
Транзисторын тоо 3.1-3.3 сая 4.5 сая
эрчим хүчний хэрэглээ 8-16 Вт 4-17 Вт
Хүчдэл 5 - 3.3 В 2.8 В
Кристал талбай 294-163-90 мм² 141 мм²
залгуур Сокет 4, 5 эсвэл 7 Сокет 7

Pentium-ийн алдааны талаар бага зэрэг тодруулж өгье: FPU дээр хийсэн зарим тооцоолол нь алдаатай үр дүнд хүргэсэн. Алдаа нь ховор байсан - гэхдээ өөр өөр эх сурвалжууд хэр ховор тохиолддог талаар өөр өөр тооцоолол өгдөг - Intel нь гэмтэлтэй процессоруудыг үнэ төлбөргүй сольсон. Pentium-ийн алдааны жишээг доор харуулав.

4195835.0 / 3145727.0 = 1.333820449136241002 (зөв үр дүн)

4195835.0 / 3145727.0 = 1.333739068902037589 (гажигтай Pentium дээр буруу үр дүн)


1995 онд гарсан Pentium Pro нь Физик хаягийн өргөтгөл (PAE) буюу 64 ГБ багтаамжтай 36 битийн хаягийн орон зайд шилжсэний ачаар 4 ГБ-аас дээш санах ойтой ажиллах чадвартай анхны x86 процессор болсон. RAM-г анхаарч үзэх хэрэгтэй. Сонирхолтой нь энэ процессор нь P6 архитектуртай анхных байсан (зарчмын хувьд Core 2 архитектур нь үүнээс тодорхой хэмжээгээр өвлөгдөж байсан) мөн эх хавтан дээр биш харин L2 кэшийг процессор дээр агуулсан анхны x86 CPU болсон. Үндсэндээ 256 кБ-аас 1 Мб хүртэлх кэш санах ой нь CPU-ийн хажууд, нэг багцад байрладаг боловч ижил хайрцагт биш, CPU-тэй ижил давтамжтайгаар ажилладаг байв.

Процессорын гүйцэтгэлийн зарим асуудал гарсан. Энэ нь 32 битийн програмуудтай сайн ажилладаг байсан ч хамаагүй удаашралтай болсон програм хангамж, энэ нь 16 битийн кодоор бичигдсэн (Windows 95-ийн зарим хэсэг шиг). Шалтгаан нь энгийн байсан: 16 битийн бүртгэлд хандах нь 32 битийн регистрийг удирдахад асуудал үүсгэж, Pentium Pro-ийн дараалалгүй архитектурын давуу талыг хүчингүй болгосон.

Intel Pentium Pro
нууц нэр P6
Гарсан огноо 1995
Архитектур 32 бит
Өгөгдлийн автобус 64 бит
Автобусны хаяг 36 бит
Макс. Санах ой 64 ГБ
L1 кэш 8 + 8 кб
L2 кэш Гадаад, 256-1024 KB (CPU давтамж дээр)
Цагийн давтамж 150-200 МГц
ФСБ 60-66 МГц
FPU суурилуулсан
SIMD Үгүй
Процессын технологи 600-350 нм
Транзисторын тоо 5,500,000 + бэлэн мөнгө
эрчим хүчний хэрэглээ 29-47 Вт
Хүчдэл 3.3 В
Кристал талбай 306-196 мм² + кэш
залгуур Сокет 8

Кэш бүхий үхрийн талбай нь 202 мм² (500 нм-д 256 кБ), 242 мм 2 (350 нм-д 512 кБ) эсвэл 484 мм 2 (350 нм-д 1 МБ) байв. Кэш дэх транзисторын тоо 15.5 сая (256 КБ), 31 сая (512 КБ), эсвэл 62 сая (1 МБ) байв.


1997 онд худалдаанд гарсан Pentium II процессор нь Pentium Pro-ийн олон нийтийн зах зээлд дасан зохицсон юм. Энэ нь Pentium Pro-тэй маш төстэй байсан ч кэш нь өөр байсан. Кэшийг процессортой ижил давтамжтайгаар ашиглахын оронд (энэ нь үнэтэй байсан) 512K L2 кэш нь хагас давтамжтайгаар ажилладаг. Нэмж дурдахад Pentium II нь сонгодог залгуураас татгалзаж, процессор болон L2 кэш агуулсан хайрцагны оронд эх хавтан эсвэл процессорын сав баглаа боодол дээр биш харин хайрцагт байрладаг болсон.

Pentium Pro-тэй харьцуулахад шинэ боломжууд нь MMX (SIMD)-ийн дэмжлэг болон L1 кэшээс хоёр дахин том хэмжээтэй. Эхний Pentium III (Katmai) нь Pentium II-тэй маш төстэй байв. 1999 онд худалдаанд гарсан бөгөөд SSE (SIMD) зааварчилгааны дэмжлэгийг нэмсэн боловч өөрөөр хэлбэл ижил байв.

Intel Pentium II ба III
нууц нэр Кламат (Pentium II 0.35 мкм), Дешутес (Pentium II 0.25 мкм), Катмай (Pentium III)
Гарсан огноо 1997, 1998, 1999
Архитектур 32 бит
Өгөгдлийн автобус 64 бит
Автобусны хаяг 36 бит (P III дээр 32 бит)
Макс. Санах ой 64 ГБ (P III дээр 4 ГБ)
L1 кэш 16 + 16 кб
L2 кэш Гадаад, 512 KB (1/2 CPU давтамж)
Цагийн давтамж 233-300 МГц (Кламат), 300-450 МГц (Deschutes), 450-600 МГц (Кламат)
ФСБ 66-100-133 МГц
FPU суурилуулсан
SIMD MMX (SSE)
Процессын технологи 350 нм (Кламат), 250 нм (Десчутес, Катмай)
Транзисторын тоо 7,500,000 + кэш (Pentium II), 9,500,000 + кэш (Pentium III)
эрчим хүчний хэрэглээ 25-35 Вт
Хүчдэл 2.8 В (0.35 мкм), 2 В (0.25 мкм)
Кристал талбай 204 мм² (0.35 мкм), 131 мм2 (0.25 мкм), 128 мм2 (PIII) + кэш
залгуур үүр 1

Pentium II ба III нь 512 KB L2 кэшээр (31 сая транзистор) тоноглогдсон. Гэхдээ Pentium II процессорын нэг хувилбар нь чип дээрх 256 KB L2 кэштэй Pentium II Mobile Dixon байв. Энэ нь 180 нм процессыг ашигласан бөгөөд ширээний хувилбараас хамаагүй хурдан байсан.


90-ээд оны сүүлээр Intel Celeron болон Xeon гэсэн хоёр алдартай брэнд процессоруудыг гаргасан. Эхнийх нь "төсвийн" зах зээлд, сүүлчийнх нь сервер, ажлын станцуудад зориулагдсан байв. Эхний Celeron (Covington) нь хоёр дахь түвшний кэшгүй Pentium II байсан бөгөөд бас өгсөн гүйцэтгэл муу, харин Pentium II Xeon нь эсрэгээрээ том кэшээр тоноглогдсон байв. Хоёр брэнд хоёулаа байсаар байна: зах зээлд нэвтрэх түвшний Celeron (ихэвчлэн кэшийн хэмжээ багасч, FSB удааширдаг) болон серверт зориулсан Xeon (хурдан FSB, заримдаа том кэш, илүү өндөр цагийн хурдтай).

Intel нь Mendocino загварын Celeron-д 128KB L2 кэшийг хурдан нэмсэн. Celeron 300A нь маш сайн overclock хийх чадвараараа алдартай байсан бөгөөд энэ нь тухайн үеийн нөөцөөс 50% ба түүнээс дээш цагийн хурдыг нэмэгдүүлэх боломжийг олгодог байсан.

Intel Celeron болон Intel Xeon
нууц нэр Ковингтон, Мендосино Дрейк
Гарсан огноо 1998 1998
Архитектур 32 бит 32 бит
Өгөгдлийн автобус 64 бит 64 бит
Автобусны хаяг 32 бит 36 бит
Макс. Санах ой 4 ГБ 64 ГБ
L1 кэш 16 + 16 кб 16 + 16 кб
L2 кэш 0 KB/128 KB (суулгасан, CPU хурдаар) Гадаад, 512 - 2408 KB (CPU давтамж дээр)
Цагийн давтамж 266-300МГц/300-533МГц 400-450 МГц
ФСБ 66 МГц 100 МГц
FPU суурилуулсан суурилуулсан
SIMD MMX MMX
Процессын технологи 250 нм 250 нм
Транзисторын тоо 7 500 000/19 000 000 7,500,000 + бэлэн мөнгө
эрчим хүчний хэрэглээ 16-28 Вт 30-46 Вт
Хүчдэл 2 В 2 В
Кристал талбай 131 мм²/154 мм2 131 мм² + кэш
залгуур Slot1/Socket 370 PPGA үүр 2

Pentium II-ийн нэгэн адил Xeon процессор нь процессорын хайрцаг дотор L2 гадаад кэштэй байсан. Түүний багтаамж нь 512 кБ-аас 2 Мб хүртэл, транзисторын тоо 31-124 сая хүртэл байв.

Pentium III нь 1 GHz хүрдэг



Зураг дээр дарж томруулна уу.

Pentium III Coppermine нь 1 GHz-д хүрсэн анхны x86 масс үйлдвэрлэсэн процессор байв; Тэр ч байтугай 1.13 GHz хувилбар гарсан ч тогтвортой байдлын асуудлаас болж зах зээлээс хурдан гарсан. Шинэ хувилбар Pentium III нь сайжруулсан L2 кэштэй байсан - одоо чип дээр "суурьсан". Энэ нь эхний загвар дээрх 512 КБ-ын гадаад кэшээс хурдан байсан бөгөөд тухайн үед таны хайлтын туршлагыг хурдасгах онцлог шинж чанартай байсан. Процессорыг сервер (Xeon), нэвтрэх түвшний (Celeron) болон гар утас (SpeedStep технологийн анхны хувилбартай) гэсэн гурван хувилбараар гаргасан.

Intel Pentium III
нууц нэр Зэсийн уурхай
Гарсан огноо 1999
Архитектур 32 бит
Өгөгдлийн автобус 64 бит
Автобусны хаяг 32 бит
Макс. Санах ой 4 ГБ
L1 кэш 16 + 16 кб
L2 кэш Суурилуулсан, 256 KB (CPU давтамж дээр)
Цагийн давтамж 500-1133 МГц
ФСБ 100-133 МГц
FPU суурилуулсан
SIMD MMX (SSE)
Процессын технологи 180 нм
Транзисторын тоо 28.1 сая
эрчим хүчний хэрэглээ 25-35 Вт
Хүчдэл 1.6V, 1.8V
Кристал талбай 106 мм²
залгуур Slot 1-Socket 370 FCPGA

2002 онд илүү том L2 кэш (512 кБ), 130 нм процессын технологи бүхий Tualatin-ийн бага зэрэг сайжруулсан хувилбар гарч ирэв. Энэ нь серверүүд (PIII-S) болон хөдөлгөөнт төхөөрөмж дээр байрладаг бөгөөд хэрэглэгчийн түвшний компьютерт ховор харагддаг.

Pentium 4: дуу чимээ ихтэй, мэдрэмж багатай


Зураг дээр дарж томруулна уу.

2000 оны арваннэгдүгээр сард Intel шинэ Pentium 4 процессороо зарлав.Түүний давтамж өндөр (хамгийн багадаа 1400 МГц) байсан ч цаг тутамд ажиллах чадвараараа өрсөлдөгч CPU-ээс хамаагүй доогуур байв. AMD Athlon(мөн Pentium III хүртэл) ижил давтамжтайгаар илүү хурдан болсон. Асуудлыг улам хүндрүүлэхийн тулд Intel Rambus RDRAM санах ой руу шилжих гэж оролдсон (тухайн үеийн цорын ганц санах ойн стандарт CPU FSB шаардлагыг хангасан) боловч амжилтгүй болсон. Маш үнэтэй бөгөөд халуухан Pentium 4 нь олон өөрчлөлт, сайжруулалтын дараа хэдхэн жилийн дараа өрсөлдөхүйц түвшинд хүрч чадсан хэвээр байна (L3 кэш болон Hyper-Threading зэрэг технологи нэмэгдсэний ачаар).

Intel Pentium 4 32 бит
нууц нэр Вилламетт Нортвуд Прескотт
Гарсан огноо 2000 2001 2004
Архитектур 32 бит 32 бит 32 бит
Өгөгдлийн автобус 64 бит 64 бит 64 бит
Автобусны хаяг 32 бит 32 бит 32 бит
Макс. Санах ой 4 ГБ 4 ГБ 4 ГБ
L1 кэш 8 кБ + 12 Kµops 8 кБ + 12 Kµops 16 кБ + 12 Kµops
L2 кэш 256 кб 512 кб 1024 кб
Цагийн давтамж 1.3-2 ГГц 1.8-3.4 GHz 2.4-3.8 ГГц
ФСБ 400 МГц QDR 400, 533, 800 МГц QDR 533, 800 МГц QDR
SIMD MMX, SSE, SSE2 MMX, SSE, SSE2 MMX, SSE, SSE2, SSE3
SMT/SMP Үгүй ээ Hyper-threading (зарим хувилбарууд) Hyper Threading
Процессын технологи 180 нм 130 нм 90 нм
Транзисторын тоо 42 сая 55 сая 125 сая
эрчим хүчний хэрэглээ 66-100 Вт 54-137 Вт 94-151 Вт
Хүчдэл 1.7V 1.55 В 1.25-1.5 В
Кристал талбай 217 мм² 146 мм² 112 мм²
залгуур Сокет 423 / Сокет 478 Сокет 478 Сокет 478/LGA775

Pentium 4 гарч ирэв гар утасны хувилбарууд(хувьсагчийн үржүүлэгчтэй), Celeron хувилбарууд (бага L2 кэштэй), Xeon хувилбарууд (L3 кэштэй). Hyper-threading болон L3 cache хоёр технологи нь эхлээд серверүүд дээр гарч ирсэн бөгөөд дараа нь үндсэн процессоруудад дасан зохицсон (хэдийгээр L3 кэш нь зөвхөн үнэтэй EE шугамд байдаг байсан).

Quad Data Rate (QDR) технологийг ашигласнаар нэрлэсэн (физик) давтамжаас дөрөв дахин үр дүнтэй давтамжтай FSB давтамжийг дурьдах нь зүйтэй: 400 МГц автобус нь 100 МГц, 533 МГц давтамжтай ажилладаг. 133 МГц гэх мэт. Эцэст нь Pentium 4-ийн 64 битийн хувилбарууд 2005 онд гарч ирсэн боловч бид дараа нь тэдний тухай ярих болно.

Pentium M: зөөврийн компьютерууд илүү хүчирхэг болсон


Зураг дээр дарж томруулна уу.

2003 онд зөөврийн компьютерын зах зээл асар хурдацтай хөгжиж эхэлсэн боловч Intel нь зөвхөн хоёр процессорыг санал болгож чадсан: хуучирсан Pentium III Tualatin болон Pentium 4, эрчим хүчний хэрэглээ нь хөдөлгөөнт төхөөрөмжид тохиромжгүй болсон. Гэвч авралыг Израилийн хөгжлийн багаас авсан: Баниас (эсвэл Pentium M). P6 архитектурт суурилсан энэхүү процессор нь (Pentium Pro-той ижил) бага эрчим хүч зарцуулдаг өндөр гүйцэтгэлтэй байв. Энэ нь бага эрчим хүч зарцуулж байхад Pentium 4-ээс ч илүү гарсан. Энэхүү процессорыг 2003 онд Centrino платформд ашиглаж байсан бөгөөд 2004 онд Dothan-ийн илүү хурдан загвартай болсон. Pentium M нь сайн ажилладаг хөдөлгөөнт ертөнц, Stealey (A100) процессор нь Dothan архитектурыг (бага давтамжтай, TDP) ашигладаг хэвээр байна.

Intel Pentium M
нууц нэр Баниас Дотан
Гарсан огноо 2003 2004
Архитектур 32 бит 32 бит
Өгөгдлийн автобус 64 бит 64 бит
Автобусны хаяг 32 бит 32 бит
Макс. Санах ой 4 ГБ 4 ГБ
L1 кэш 32 + 32 кб 32 + 32 кб
L2 кэш 1024 кб 2048 кб
Цагийн давтамж 0.9-1.7 ГГц 1-2.13 GHz
ФСБ 400 МГц QDR 400, 533 МГц QDR
SIMD MMX, SSE, SSE2 MMX, SSE, SSE2
SMT/SMP Үгүй ээ Үгүй ээ
Процессын технологи 130 нм 90 нм
Транзисторын тоо 77 сая 140 сая
эрчим хүчний хэрэглээ 9-30 Вт 6-35 Вт
Хүчдэл 0.9-1.5V 0.9-1.4V
Кристал талбай 82 мм² 87 мм²
залгуур Сокет 479 Сокет 479

Pentium 4-ийн нэгэн адил FSB нь физик давтамжаас (QDR) дөрөв дахин их ажилладаг. Socket 479 процессорын залгуур нь 478 тээглүүр ашигладаг боловч Pentium 4 Socket 478-ээс ялгаатай байхаар өөр өөр байрлуулсан (хэдийгээр адаптерууд байдаг).

Pentium 4 нь 64 бит ба нэг цөмтэй болсон



Зураг дээр дарж томруулна уу.

2005 онд Intel Pentium 4-ийг хоёр удаа сайжруулсан.Эхлээд Prescott-2M, дараа нь Smithfield гарч ирэв. Эхнийх нь Прескотт дизайн дээр суурилсан 64 битийн процессор болсон бол хоёр дахь нь анхны хоёр цөмт процессор болжээ. Үнэн хэрэгтээ эдгээр нь бусад Pentium 4 CPU-тэй маш төстэй бөгөөд ижил төстэй асуудлуудтай байдаг: нэг цагт гүйцэтгэх зааварчилгаа (IPC) бага, дулаан ялгаралт ихтэй тул цагийн хурдыг нэмэгдүүлэхэд бэрхшээлтэй байдаг. Core 2 Duo-г угтаж байгаа компанийн зах зээл дэх хүнд хэцүү байр суурийг ямар нэгэн байдлаар нөхөх зорилготой эдгээр хоёр процессорыг магтах нь ховор. Хэдийгээр Pentium D процессор (Смитфилдийн арилжааны нэр) хоёр цөмтэй байсан ч тэдгээр нь нэг багц дахь хоёр Prescott талст байв.

Intel Pentium 4
нууц нэр Прескотт-2М Смитфилд
Гарсан огноо 2005 2005
Архитектур 64 бит 64 бит
Өгөгдлийн автобус 64 бит 64 бит
Автобусны хаяг 64 (үнэхээр 36) бит 64 (үнэхээр 36) бит
Макс. Санах ой 64 ГБ 64 ГБ
L1 кэш 16 кБ + 12 Kµops 2 x 16 кБ + 12 Kµops
L2 кэш 2048 кб 2 х 1024 КБ
Цагийн давтамж 3-3.6 GHz 2.8-3.2 ГГц
ФСБ 800 МГц QDR 800 МГц QDR
SIMD MMX, SSE, SSE2, SSE3 MMX, SSE, SSE2, SSE3
SMT/SMP Hyper Threading Хоёр цөм (зарим загвар дээр Hyper-Threading)
Процессын технологи 90 нм 90 нм
Транзисторын тоо 169 сая 230 сая
TDP 84-115 Вт 95-130 Вт
Хүчдэл 1.2V 1.2V
Кристал талбай 135 мм² 206 мм²
залгуур LGA775 LGA775

Хамгийн сонирхолтой Pentium 4 процессорууд нь PAE-г дэмждэггүй (36 битийн эсрэг 32 битийн санах ойн ажиллагааг хангадаг) бөгөөд 4 ГБ RAM-аар хязгаарлагддаг байсан ч эдгээр загварууд энэ босгыг давж магадгүй юм. Практикт хаягийн автобус нь 36 бит (Xeon-ийн 40 бит) хязгаарлагдмал хэвээр байсан ч PAE (4 ГБ хуудасны менежмент) технологи нь өнгөрсөн зүйл юм - 64 битийн програмууд нь боломжтой бүх санах ойг ашиглах боломжтой.

Hyper-Threading буюу Intel-ийн Virtual Multiprocessing Technology (SMT) нь зарим загварт (Xeon болон Extreme Edition) бас боломжтой байсан. Эцэст нь 65 нм шугам (9х0 шугам) Pentium 4 хожим гарч ирсэн боловч ямар ч чухал сайжруулалт агуулаагүй байна.

Анхны гар утасны хоёр цөмт процессор



Зураг дээр дарж томруулна уу.

2006 онд Intel зарласан үндсэн процессорхос. Энэхүү анхны хоёр цөмт зөөврийн компьютерын процессор нь гайхалтай гүйцэтгэлийг үзүүлсэн нь Pentium 4-ээс хамаагүй дээр юм. Энэ нь мөн анхны "жинхэнэ" x86 хоёр цөмт процессор болох нь батлагдсан. Жишээлбэл, кэшийг хуваалцсан (Пентиум D нь нэг багцад хоёр чип угсрахтай адил байсан). Процессор нь шинэ Centrino Duo платформын нэг хэсэг болсон бөгөөд маш амжилттай болсон. Цорын ганц дутагдал нь Pentium 4-тэй адил 32 битийн процессор хэвээр үлдсэн явдал юм.

Intel Core Duo
нууц нэр Ёна
Гарсан огноо 2006
Архитектур 32 бит
Өгөгдлийн автобус 64 бит
Автобусны хаяг 32 бит
Макс. Санах ой 4 ГБ
L1 кэш 32 + 32 кб
L2 кэш Нийт 2048 кб
Цагийн давтамж 1.06-2.33 GHz
ФСБ 667 МГц
SIMD MMX, SSE, SSE2, SSE3
SMT/SMP Хоёр цөм
Процессын технологи 65 нм
Транзисторын тоо 151 сая
TDP 9-31 Вт
Хүчдэл 0.9-1.3V
Кристал талбай 91 мм²
залгуур Сокет 479

Core Solo-ийн нэг цөмт хувилбар, мөн 667 МГц-ийн эсрэг 533 МГц QDR автобус (133 МГц) ашигладаг бага чадлын хувилбарууд бас гарсан. Энэ процессорыг мөн серверүүдэд (код нэртэй Sossaman) ашигласан бөгөөд энэ нь гар утасны салбарт зориулагдсан процессорын хувьд анхных байсан юм. Процессор нь Core 2 Duo-д танилцуулагдсан Core архитектурыг ашигладаггүй бөгөөд зөөврийн компьютерт Core 2 Duo (Merom) хувилбараар хурдан солигдсон гэдгийг анхаарна уу. Мөн Yonah's Socket 479 нь бусад Pentium M процессоруудын Socket 479-ээс ялгаатай.

Орчин үеийн удирдагч: Core 2 Duo


Зураг дээр дарж томруулна уу.

2006 онд Intel процессороо танилцуулж, маш хурдан бестселлер болсон: Core 2 Duo. Түүнийг хөгжүүлэх явцад Pentium M-ийн туршлага ихээхэн хэмжээгээр татагдсан боловч процессор нь шинэ Core архитектурыг ашигладаг. Түүний өмнө Intel нь ширээний компьютерт зориулсан Pentium 4, зөөврийн компьютерт зориулсан Pentium M, серверт зориулсан хоёр төрлийн процессорыг гаргасан. Харин одоо эсрэгээрээ Intel бүх шугамын нэг бичил архитектуртай болсон. 64 битийн Core 2 Duo нь ширээний компьютер, зөөврийн компьютер болон серверт зориулагдсан доороос дээш бүх сегментүүдэд байдаг.

Архитектурын олон хувилбарууд байдаг бөгөөд үүний үр дүнд өөр өөр тооны цөм (нэгээс дөрөв хүртэл, өөрөөр хэлбэл Solo-аас Quad хүртэл), кэш санах ой (512 КБ-аас 12 МБ хүртэл), FSB хурд (400-аас 1600 МГц хүртэл) бүхий тохиргоонууд бий. QDR). Зураг дээр анхны Core 2 Duo загварыг харуулсан боловч илүү хурдан хувилбарууд (45 нм) байдаг.

Intel Core 2 Duo
нууц нэр конро
Гарсан огноо 2006
Архитектур 64 бит
Өгөгдлийн автобус 64 бит
Автобусны хаяг 64 (үнэхээр 36) бит
Макс. Санах ой 64 ГБ
L1 кэш 32 + 32 кб
L2 кэш Нийт 2048 кб
Цагийн давтамж 1.8-3 ГГц
ФСБ 800-1066-1333 МГц
SIMD MMX, SSE, SSE2, SSE3, SSSE3
SMT/SMP Хоёр цөм
Процессын технологи 65 нм
Транзисторын тоо 291 сая
TDP 65 Вт
Хүчдэл 1.5V
Кристал талбай 143 мм²
залгуур LGA 775

Гар утасны хувилбарууд (Merom) нь үндсэндээ адилхан (гэхдээ хурдан биш, удаан FSB-тэй), харин Extreme Edition хувилбарууд нь илүү хурдан байдаг. Core 2 Duo нь дөрвөлсөн цөмт хувилбартай бөгөөд нэг багцад хоёр хоёр цөмт Conroe хөтчийг ашигладаг. Core 2 Duo (Penryn)-ийн 45 нм хувилбар нь илүү их кэш, бага дулаантай боловч үндсэн мэдээлэл нь эхний загвартай ижил хэвээр байна.

Ирээдүй: Нехалем, Атом гэх мэт.



Зураг дээр дарж томруулна уу.

Таны таамаглаж байгаачлан энэ бол цувралын эхний нийтлэл юм. Үүний дараа AMD процессоруудын тухай хоёрдахь нийтлэл гарах болно (түүний дотор AMD график картууд ATI). Гэхдээ түүх Intel процессорууд x86 нь Core 2 Duo-тэй дуусахгүй, ирээдүйд илүү олон загвар гарч ирэх болно. Nehalem болон Atom нь мөн x86 процессор юм. Intel-ийн Larrabee нэртэй график зах зээлд удахгүй гарах гэж байгаа нь бас олон x86 цөм дээр суурилагдсан гэдгийг бидэнд ямар нэг зүйл хэлж байна.

x86 эсвэл x64: Энэ юу гэсэн үг вэ?

Эдгээр тэмдэглэгээний ихэнх нь мухардалд хүргэдэг нь гарцаагүй бөгөөд өнөөдөр бид үүнээс гарах болно.

Үнэндээ x86, x64- зүгээр л үйлдлийн системийн битийн гүнийг битээр хэмжсэн тэмдэглэгээ (тус тус бүр 32 ба 64 бит). Дашрамд хэлэхэд, бас 16 бит байдаг - гэхдээ зөвхөн энэ битийн гүнийг ойлгодог процессоруудтай уулзах нь нэлээд хэцүү байдаг. Үүний тулд 10 жил ухрах хэрэгтэй. Ямар ч байсан тэдэнтэй "танилцаарай" x86 эсвэл x64системүүд ажиллахгүй.

Энэ бүхэн юуны төлөө вэ?

Энэ бүхэн нь таны компьютерийн процессор ажиллах тоонуудын битийн гүнийг тодорхойлох боломжийг танд олгоно. Мөн энэ шалтгааны улмаас доор x86 эсвэл x64системүүд нь өөрийн гэсэн программ, драйвер гэх мэт хувилбаруудтай байдаг.

Илүү өндөр битийн гүн (x64) нь бусад зүйлсийн дунд тооцооллын нарийвчлалыг мэдэгдэхүйц сайжруулах боломжийг олгодог. Гэхдээ энгийн хэрэглэгчдэд ийм хэрэгцээ байдаггүй бөгөөд 64 битийн системийг ашиглах цорын ганц зүйл бол санамсаргүй хандалт санах ойкомпьютер дээр 4 гигабайтаас дээш.

Баримт нь 32 битийн системүүд 4 гигабайтаас илүү RAM-г "хардаггүй".

Эцэст нь: x86 эсвэл x64?

Хэрэв танд 4 Гб ба түүнээс бага RAM байгаа бол 32 бит (x86) систем танд хангалттай. Үгүй бол x64 ашиглана уу.

Нэг удаа би програмын тайлбараас x86 эсвэл x64-ийг хараад маш их эргэлзэж байсан бөгөөд яагаад x64-ийг 64 битийн хувьд x86 гэж зааж өгсөн бол x32 биш харин 32 битийн хувьд x86 гэж зааж өгсөн бол яагаад гэдгийг ойлгохгүй байсан. Сүүлийнх нь илүү танил, логик байх ёстой бөгөөд x86 нь санахын аргагүй зүйл биш бөгөөд энэ тоо нь логикийг үл тоомсорлодог: математикийн хувьд 86 нь 64-ээс их боловч бодит байдал дээр энэ нь хагас дахин их болж хувирдаг. "x86 x64 x32" тоонуудаас ийм байдлаар та оньсого хийж болно. Гэвч үнэндээ...

x86 нь x32, мөн x64-тэй тэнцүү

Энэ бүх төөрөгдлийн үед бүх зүйл энгийн болж хувирдаг бөгөөд x86 ба x64-ийг хамт бичдэг зохиолчдын алдаа нь үргэлж байдаг. Бараг бүх хүн ингэж бичдэг ч энэ нь зүгээр л буруу юм.

Баримт нь x86 нь микропроцессорын архитектур бөгөөд гучин хоёр жаран дөрвөн битийн програмуудад хэрэглэгдэх техник хангамжийн платформ юм. X86 нэр нь анхны intel i8086 процессор болон дараагийн хэд хэдэн процессорын нэрнээс гаралтай бөгөөд 86 нь үргэлж төгсгөлд нь хамааралтай байдаг. Хэсэг хугацааны дараа шинэ процессоруудын тоон тэмдэглэгээг нэрээр сольж эхэлсэн тул олон нийт Pentium болон Celeron-ийн талаар мэдсэн боловч x86 платформ өнөөг хүртэл өөрчлөгдөөгүй байна.

Утга хоёр, тэмдэглэгээ гурав уу? x86, x32 ба x64 - хэрхэн зөв бичих вэ?

Хэрэв x86 нь процессорын архитектур юм бол x32 ба x64 нь түүний битийн гүн - хаягийн орон зай, түүнчлэн процессор нэг цагийн мөчлөгт боловсруулж чадах мэдээллийн хэмжээ юм.

Тэд 32 битийн платформыг илэрхийлсэн x86 битийн гүнийг харуулсан програмын нийцтэй байдлын талаар бичихэд энэ нь буруу бөгөөд зөвхөн төөрөгдөл юм. x86_32bit эсвэл x86_64bit гэж зааж өгөх нь зөв. Товчхондоо ойлгомжтой x32 эсвэл x64.

Тиймээс бид нэгтгэн дүгнэж болно: одоо x86-г хуучин загвараар зааж өгсөн (Microsoft ч гэсэн үүнтэй холбоотой), энэ платформ нь ганц бие байсан бөгөөд 64-битийг хэн ч мэдэхгүй байсан. X64 платформ гарч ирэхэд тэд үүнийг байгаагаар нь зааж эхэлсэн бөгөөд хуучин 32 битийн платформ нь ихэнх тохиолдолд x86 хэвээр үлджээ. Тэгээд одоо энэ нь мөн чанарыг ойлгодоггүй хүмүүст хамааралгүй, алдаатай, төөрөгдүүлсэн юм. Тэгээд одоо та үүнийг ойлгож байна. :)

x32 эсвэл x64? Юу сонгох вэ? Юу нь дээр вэ?

Маш олон удаа асуулт гарч ирдэг, би x32 эсвэл x64 үйлдлийн системийг сонгох уу? Энэ нь гучин хоёр бит үү, жаран дөрвөн бит үү?
Энэ бол риторик, онолын, маргаантай асуулт юм. Мэдээжийн хэрэг x64 илүү сайн, гэхдээ үргэлж биш, хэрэв та Windows ашиглаж байгаа бол тийм биш. Үгүй ээ, ямар ч Windows x64 нь Windows x32-ээс арай хурдан ажилладаг, гэхдээ танд 64 битийн системийн бүх програм, бүх драйвер байгаа тохиолдолд л хангалттай. Маш олон удаа, хэрэв компьютер орчин үеийн бол энэ нь ихэвчлэн бүрэлдэхүүн хэсгүүдийн бүх системийн драйверуудтай байдаг. Гэхдээ асуудал нь програмууд, ялангуяа видео болон аудио кодлогчдод оршдог. Ямар нэгэн зүйл болохгүй нь лавтай. Хэрэв гучин хоёр битийн програмууд x64 системд ажиллах боломжтой бол түүнд зориулсан драйвер, кодлогч x64 шаардлагатай болно. Жилээс жилд энэ асуудал арилдаг ч өнөөг хүртэл бүрэн арилаагүй л байна. X32 системтэй бол ийм асуудал гардаггүй бөгөөд гэрийн хувьд яг ийм зүйлийг сонгох нь дээр.
p.s. 2010 оноос өмнө 32 битийн эсвэл 64 битийн үйлдлийн системийг сонгох асуудал үнэхээр тулгарч байсан. Шалтгааныг дээрх догол мөрөнд тайлбарласан болно. Түүнээс хойш таван жил өнгөрсөн ч энэ асуудал харагдахаа больсон. Мэдээжийн хэрэг, 32 битийг дэмжсэн онцгой чухал шалтгаан байхгүй бол 64 битийг огт бодолгүйгээр суулгах нь дээр.

Өнөөдөр хамгийн алдартай хоёр процессорын архитектур байдаг. Энэ бол 80-аад онд бүтээгдсэн, одоо ашиглагдаж байсан x86 юм хувийн компьютеруудболон ARM - илүү орчин үеийн бөгөөд энэ нь процессоруудыг жижиг, хэмнэлттэй болгох боломжийг олгодог. Энэ нь ихэнх хөдөлгөөнт төхөөрөмж эсвэл таблетуудад ашиглагддаг.

Архитектур хоёулаа давуу болон сул талуудтай, хэрэглээний талбартай боловч нийтлэг шинж чанарууд байдаг. Олон мэргэжилтнүүд ARM бол ирээдүй гэж хэлдэг ч x86-д байхгүй сул талууд байсаар байна. Өнөөдрийн өгүүллээр бид гарны архитектур нь x86-аас юугаараа ялгаатай болохыг авч үзэх болно. ARM эсвэл x86-ийн үндсэн ялгааг авч үзээд аль нь илүү дээр болохыг тодорхойлохыг хичээ.

Процессор нь ухаалаг утас эсвэл компьютер гэх мэт аливаа тооцоолох төхөөрөмжийн гол бүрэлдэхүүн хэсэг юм. Түүний гүйцэтгэл нь төхөөрөмж хэр хурдан ажиллах, батерейгаар хэр их ажиллахыг тодорхойлдог. Энгийнээр хэлбэл, процессорын архитектур гэдэг нь программуудыг эмхэтгэх, процессорын транзисторуудын тодорхой хослолыг ашиглан техник хангамжийн түвшинд хэрэгжиж болох заавруудын багц юм. Эдгээр нь программуудыг техник хангамжтай харилцах боломжийг олгодог бөгөөд өгөгдлийг санах ой руу хэрхэн шилжүүлэх, уншихыг тодорхойлдог.

Дээр Энэ мөч CISC (Complex Instruction Set Computing) ба RISC (Reduced Instruction Set Computing) гэсэн хоёр төрлийн архитектур байдаг. Эхнийх нь бүх тохиолдлын зааврыг процессор дээр хэрэгжүүлнэ гэж үздэг бол хоёр дахь нь RISC нь хөгжүүлэгчдэд ажиллахад хамгийн бага шаардлагатай командын багц бүхий процессор үүсгэх даалгаврыг өгдөг. RISC заавар нь жижиг бөгөөд энгийн.

x86 архитектур

x86 процессорын архитектур нь 1978 онд бүтээгдсэн бөгөөд анх Intel процессоруудад гарч ирсэн бөгөөд CISC төрөлд хамаарна. Түүний нэрийг энэ архитектуртай анхны процессорын загвараас авсан - Intel 8086. Цаг хугацаа өнгөрөхөд илүү сайн хувилбар байхгүйн улмаас AMD зэрэг бусад процессор үйлдвэрлэгчид энэ архитектурыг дэмжиж эхэлсэн. Энэ нь одоо стандарт болсон ширээний компьютерууд, зөөврийн компьютер, нэтбүүк, сервер болон бусад ижил төстэй төхөөрөмжүүд. Гэхдээ заримдаа x86 процессоруудыг таблетуудад ашигладаг бөгөөд энэ нь нэлээд түгээмэл практик юм.

Анхны Intel 8086 процессор нь 16 битийн гүнтэй байсан бол 2000 онд 32 битийн архитектурын процессор гарч, бүр сүүлд 64 битийн архитектур гарч ирэв. Бид тусдаа нийтлэлд дэлгэрэнгүй авч үзсэн. Энэ хугацаанд архитектур маш их хөгжиж, шинэ заавар, өргөтгөлүүд нэмэгдсэн нь процессорын гүйцэтгэлийг ихээхэн нэмэгдүүлэх боломжтой болсон.

x86-д хэд хэдэн байдаг мэдэгдэхүйц дутагдалтай. Нэгдүгээрт, энэ бол олон жилийн хөгжлийн түүхээс үүдэлтэй багуудын нарийн төвөгтэй байдал, тэдний төөрөгдөл юм. Хоёрдугаарт, ийм процессорууд хэт их эрчим хүч зарцуулж, үүнээс болж их хэмжээний дулаан үүсгэдэг. x86 инженерүүд эхэндээ хамгийн их гүйцэтгэлийг олж авах замыг сонгосон бөгөөд хурд нь нөөц шаарддаг. Arm x86-ийн ялгааг харахын өмнө ARM архитектурын талаар ярилцъя.

ARM архитектур

Энэхүү архитектурыг x86-д бага зэрэг хожуу нэвтрүүлсэн - 1985 онд. Үүнийг Их Британид алдартай Acorn компани бүтээсэн бөгөөд дараа нь энэхүү архитектурыг Arcon Risk Machine гэж нэрлэж, RISC төрөлд хамаарах боловч дараа нь түүний сайжруулсан хувилбар болох Advanced RISC Machine гарсан бөгөөд үүнийг одоо ARM гэж нэрлэдэг.

Энэхүү архитектурыг боловсруулахдаа инженерүүд x86-ийн бүх дутагдлыг арилгаж, цоо шинэ, хамгийн үр ашигтай архитектурыг бий болгох зорилго тавьсан. ARM чипүүд нь хамгийн бага эрчим хүчний зарцуулалт, хямд үнээр авсан боловч x86-тай харьцуулахад гүйцэтгэл муу байсан тул персонал компьютер дээр анхандаа төдийлөн нэр хүнд олж чадаагүй юм.

x86-аас ялгаатай нь хөгжүүлэгчид эхлээд авах гэж оролдсон хамгийн бага зардалнөөцийн хувьд тэдгээр нь процессорын зааварчилгаа, транзистор цөөн, гэхдээ үүний дагуу цөөхөн байдаг нэмэлт функцууд. Гэвч сүүлийн жилүүдэд ARM процессоруудын гүйцэтгэл сайжирсан. Үүнийг харгалзан бага эрчим хүч зарцуулдаг тул тэдгээрийг маш өргөн ашиглаж эхэлсэн хөдөлгөөнт төхөөрөмжүүдтаблет, ухаалаг утас гэх мэт.

ARM болон x86 хоорондын ялгаа

Одоо бид эдгээр архитектурын хөгжлийн түүх, тэдгээрийн үндсэн ялгааг авч үзсэнийхээ дараа ARM ба x86-г янз бүрийн шинж чанаруудын дагуу нарийвчилсан харьцуулалт хийж, аль нь илүү сайн болохыг, тэдгээрийн ялгаа нь юу болохыг илүү нарийвчлалтай тодорхойлохын тулд үзье. байна.

Үйлдвэрлэл

x86 ба гар үйлдвэрлэл нь ялгаатай. x86 процессоруудыг зөвхөн Intel болон AMD гэсэн хоёр компани үйлдвэрлэдэг. Эхэндээ энэ нь нэг компани байсан боловч энэ бол огт өөр түүх юм. Зөвхөн эдгээр компаниуд ийм процессоруудыг гаргах эрхтэй бөгөөд энэ нь зөвхөн дэд бүтцийн хөгжлийн чиглэлийг удирдана гэсэн үг юм.

ARM нь маш өөрөөр ажилладаг. ARM хөгжүүлдэг компани юу ч гаргадаггүй. Тэд зүгээр л энэ архитектурын процессоруудыг боловсруулах зөвшөөрөл олгодог бөгөөд аль хэдийн үйлдвэрлэгчид шаардлагатай бүх зүйлээ хийх боломжтой, жишээлбэл, шаардлагатай модулиудаар тодорхой чипүүдийг гаргах боломжтой.

Зааврын тоо

Эдгээр нь гар болон x86 архитектурын гол ялгаа юм. x86 процессорууд хурдацтай хөгжиж, илүү хүчирхэг, бүтээмжтэй болсон. Хөгжүүлэгчид процессорын олон тооны зааварчилгааг нэмсэн бөгөөд энд зөвхөн үндсэн багц биш, харин үүнээс татгалзаж болох олон тушаалууд байдаг. Эхэндээ энэ нь дискэн дээрх программуудын эзэлдэг санах ойн хэмжээг багасгах зорилгоор хийгдсэн. Мөн олон хамгаалалт, виртуалчлалын сонголтууд, оновчлолууд болон бусад олон зүйлийг боловсруулсан. Энэ бүхэн нь нэмэлт транзистор, эрчим хүч шаарддаг.

ARM нь илүү энгийн. Энд процессорын зааврууд хамаагүй цөөхөн, зөвхөн үйлдлийн системд шаардлагатай бөгөөд бодитоор хэрэглэгдэж байгаа заавар байдаг. Хэрэв бид x86-г харьцуулбал ердөө 30% л болно боломжтой заавар. Хэрэв та гараар програм бичихээр шийдсэн бол тэдгээрийг сурахад илүү хялбар бөгөөд хэрэгжүүлэхэд цөөн тооны транзистор шаардагдана.

Эрчим хүчний хэрэглээ

Өмнөх догол мөрөөс өөр нэг дүгнэлт гарч байна. Самбар дээр илүү олон транзистор байх тусам түүний талбай, эрчим хүчний хэрэглээ ихсэх ба эсрэгээр.

x86 процессорууд ARM-аас хамаагүй их эрчим хүч зарцуулдаг. Гэхдээ цахилгаан зарцуулалт нь транзисторын хэмжээнээс хамаарна. Жишээлбэл, Intel i7 процессор нь 47 ватт, ухаалаг гар утсанд зориулсан аливаа ARM процессор нь 3 ваттаас ихгүй эрчим хүч зарцуулдаг. Өмнө нь 80 нм хэмжээтэй нэг элемент бүхий хавтанг үйлдвэрлэдэг байсан бол Intel үүнийг 22 нм болгон бууруулж, энэ жил эрдэмтэд 1 нанометр элементийн хэмжээтэй хавтанг бүтээх боломжтой болсон. Энэ нь гүйцэтгэлийг алдагдуулахгүйгээр эрчим хүчний хэрэглээг ихээхэн багасгах болно.

Сүүлийн жилүүдэд x86 процессоруудын эрчим хүчний хэрэглээ эрс багассан, жишээлбэл, шинэ Intel Haswell процессорууд батерейгаар удаан ажиллах боломжтой. Одоо x86-ийн ялгаа бага багаар арилж байна.

Дулаан алдагдах

Транзисторын тоо нь өөр параметрт нөлөөлдөг - энэ нь дулааны үйлдвэрлэл юм. Орчин үеийн төхөөрөмжүүд нь бүх энергийг үр дүнтэй үйлдэл болгон хувиргаж чадахгүй, зарим нь дулаанаар ялгардаг. Самбаруудын үр ашиг нь адилхан бөгөөд энэ нь цөөн тооны транзистор, тэдгээрийн хэмжээ бага байх тусам процессор бага дулаан үүсгэдэг гэсэн үг юм. ARM эсвэл x86 бага дулааныг бий болгоно гэсэн асуулт байхгүй болсон.

Процессорын гүйцэтгэл

ARM нь хамгийн их гүйцэтгэлийг хангахын тулд бүтээгдээгүй, x86 энд л хөгжиж байна. Энэ нь зарим талаараа цөөн тооны транзистортой холбоотой юм. Гэвч сүүлийн үед ARM процессоруудын гүйцэтгэл нэмэгдэж байгаа бөгөөд тэдгээрийг зөөврийн компьютер эсвэл сервер дээр аль хэдийн бүрэн ашиглах боломжтой болсон.

олдворууд

Энэ нийтлэлд бид ARM нь x86-аас юугаараа ялгаатай болохыг харлаа. Ялгаанууд нь нэлээд ноцтой юм. Гэвч сүүлийн үед хоёр архитектурын хоорондох шугам бүдгэрч байна. ARM процессорууд илүү бүтээмжтэй, хурдан болж байгаа бөгөөд x86 нь хавтангийн бүтцийн элементийн хэмжээ багассан тул бага эрчим хүч зарцуулж, бага дулаан ялгаруулж эхэлдэг. Та сервер болон зөөврийн компьютер дээрх ARM процессорыг, таблет болон ухаалаг гар утсан дээрх x86 процессорыг аль хэдийн олж болно.

Та эдгээр x86 болон ARM-ийн талаар ямар сэтгэгдэлтэй байна вэ? Таны бодлоор ирээдүй ямар технологи вэ? Сэтгэгдэл дээр бичээрэй! Дашрамд хэлэхэд, .

ARM архитектурын хөгжлийн тухай видеоны төгсгөлд:

x86-64 нь AMD-ийн боловсруулсан x86 архитектурын 64 битийн өргөтгөл бөгөөд програмуудыг 64 битийн горимд ажиллуулах боломжийг олгодог.

Өгүүллэг

Анхны тодорхойлолтыг 2000 онд AMD боловсруулсан. Архитектурыг хэрэгжүүлсэн анхны процессор нь AMD K8 (2003 онд гарсан) байв.

Тэр жилүүдэд (90-ээд оны сүүл ба 2000-аад оны эхээр) HP болон Intel нь 64 битийн IA-64 (Intel Itanium) архитектурыг боловсруулсан. Гэхдээ энэ нь VLIW (маш урт заавар үг) зарчим дээр суурилсан эрс өөр байсан бөгөөд 32 битийн x86 архитектуртай нийцэхгүй байв. Өмнө нь бичсэн асар их хэмжээний програм хангамж IA-64 дээр ажиллахгүй байсан тул энэхүү архитектур нь алдар нэрээ олж чадаагүй юм. Хэдийгээр 2001 оны сүүлээр IA-64-д зориулсан Windows XP-ийн 64 битийн тусгай хувилбарыг IA-64-д зориулж гаргасан.

X86 архитектур нь 1978 оноос эхэлсэн бөгөөд 16 битээр эхэлсэн бөгөөд 1985 онд 32 бит болсон. Архитектур нь арагш нийцтэй байхын тулд олон тооны таягтай байдаг. Түүнийг 32 битийн тооцоололтой хамт үхнэ гэж таамаглаж байсан. Гэсэн хэдий ч x86-64 гарч ирснээр түүнд шинэ амьдрал бий болсон.

нэрлэх

Энэ технологийн нэр дээр хэд хэдэн хувилбар байдаг бөгөөд энэ нь заримдаа төөрөгдөлд хүргэдэг.

  • x86-64- анхны хувилбар. Энэ нэрийн дор AMD анхны урьдчилсан тодорхойлолтыг нийтлэв.
  • x64- үйлдлийн хувилбаруудын албан ёсны нэр Windows системүүд, мөн Microsoft болон Oracle архитектурын нэр болгон ашигладаг.
  • AMD64- анхны Clawhammer болон Sledgehammer процессоруудыг гаргасны дараа архитектурын нэр дээр AMD хөгжүүлэгчийн нэр гарч ирэв. Энэ нь одоо AMD-ийн хэрэгжилтийн албан ёсны хэрэг юм.
  • EM64T- Intel-ийн хэрэгжилтийн анхны албан ёсны нэр. Өргөтгөсөн санах ой 64 технологи гэсэн үг.
  • Intel 64нь Intel архитектурын одоогийн албан ёсны нэр юм.

Заримдаа AMD-ийн тухай дурдах нь хэрэглэгчдийг төөрөгдүүлж, үйлдлийн системийн эх хувилбаруудын түгээлтийг ашиглахаас татгалзаж, AMD-д зориулсан хувилбар нь тэдний Intel процессор дээр ажиллахгүй гэсэн үндэслэлээр төөрөгдүүлдэг. Үнэн хэрэгтээ, програм хангамжийн дистрибьютерүүд зөвхөн AMD энэ технологийг хөгжүүлэх анхдагч байсан учраас amd64 нэрийг ашигладаг.

Ихэнхдээ хэрэглэгчид x86-64 архитектурыг IA-64-тэй андуурдаг. Ийм алдаанаас зайлсхийхийн тулд Intel 64 ба IA-64 нь огт өөр, үл нийцэх микропроцессорын архитектур гэдгийг санах нь зүйтэй. 2017 онд та IA-64 (Itanium) архитектурын процессорыг хаанаас ч олохгүй байх магадлалтай.

Тархалт

Супер компьютерууд

TOP-500 суперкомпьютеруудын жагсаалтад x86-64 архитектур нь өмнө нь алдартай RISC архитектур болон 32 битийн хувилбаруудыг сольсон. Intel өөрийн Itanium (хамгийн их хувийг 2004 онд хүрсэн) сурталчлах гэж оролдсон боловч амжилтанд хүрсэнгүй.

Дата төвүүд

X86 чип ашигладаг серверүүд зах зээлийн 90 гаруй хувийг хадгалсаар байна. http://www.common.org/servers/x86-servers-data-center/

Google-ийн бүх мэдээллийн төвүүд одоо сайн мэддэг x86 архитектуртай Intel процессоруудыг ашигладаг. Гэсэн хэдий ч Google өөр шийдлүүдийг ашиглахаар төлөвлөж байна. https://habrahabr.ru/company/ibm/blog/282820/

2017 онд дийлэнх тохиолдолд их хэмжээний мэдээллийг боловсруулах алгоритмыг x86-64 архитектур дээр гүйцэтгэдэг тул бид үүнийг AISOBOI-ийн магистрын курст авч үзэх болно.

Бүртгэл

x86-64 архитектур нь:

  • 16 64 битийн ерөнхий зориулалтын бүхэл тоо бүртгэл (RAX, RBX, RCX, RDX, RBP, RSI, RDI, RSP, R8 - R15);
  • 8 80 бит хөвөгч цэгийн бүртгэл (ST0 - ST7);
  • 8 64 битийн MMX регистр (MM0 - MM7, ST0 - ST7 регистрүүдтэй зайг хуваалцах);
  • 16 128 битийн SSE бүртгэл (XMM0 - XMM15);
  • 64 битийн RIP заагч ба 64 бит RFLAGS тугийн бүртгэл.

64 битийн регистр дээрх үйлдлүүд (нэмэх, хасах гэх мэт) нь 32 битийн регистр дээрх үйлдлүүдтэй ижил хугацаа зарцуулдаг.

Энэ нь гайхмаар санагдаж магадгүй ч регистрийн доод 32 битийн тал дээр үйлдлүүд дээд 32 битийг дахин тохируулдаг. Жишээлбэл,

mov eax, ebx

rax дахь өндөр битүүдийг автоматаар хүчингүй болгоно.

Үүнийг оновчтой болгох зорилгоор хийдэг. Энэ нь процессорыг хамаарлын гинжийг таслах боломжийг олгодог (бага битүүдтэй ажиллахын тулд өндөр битүүдийг тоолох хүртэл хүлээх шаардлагагүй, учир нь өндөр битүүд нь хэнд ч хэрэггүй байх болно).

Орчин үеийн процессор нь маш нарийн төвөгтэй юм. Архитектурын гарын авлагад тодорхойлсон процессорын загвар нь орчин үеийн цөмийн бодит механизмыг үнэн зөв тайлбарлаагүй байна. Ялангуяа процессорын регистр гэсэн ойлголт үнэн биш, "техник хангамжид" eax эсвэл rax регистр гэж байдаггүй. Процессорын регистр гэдэг ойлголт нь виртуалчлагдсан. Энэ технологийг нэрлэдэг нэрийг өөрчлөх бүртгэл(нэрийг өөрчлөх бүртгэл). Заавар декодлогч нь регистрүүдийн томоохон банкнаас бүртгэлийг хуваарилдаг. Заавар дуусмагц энэ динамикаар хуваарилагдсан регистрийн утгыг rax гэж хэлье. Энэ ажлыг үр дүнтэй болгож, олон зааврыг нэгэн зэрэг гүйцэтгэхийн тулд үйлдлүүд нь харилцан хамааралгүй байх нь маш чухал юм. Бүртгэлийн үнэ цэнэ нь бусад зааварчилгаанаас шалтгаалж байвал муу.

Зааварчилгаа

x86-64 нь төрөл юм CISC(цогц зааврын багц тооцоолох). Энэ нь бараг цорын ганц орчин үеийн CISC архитектур юм. Бусад алдартай архитектурууд нь зарчмаар бүтээгдсэн байдаг RISC(багасгасан зааврын багц компьютер).

Үүний зэрэгцээ орчин үеийн x86 процессорууд нь CISC-тэй нийцдэг боловч RISC цөмтэй процессорууд бөгөөд албан ёсоор эрлийз гэж тооцогддог. Ийм эрлийз CISC процессоруудад CISC командуудыг дотоод RISC заавруудын багц болгон хувиргадаг бол нэг x86 заавар нь хэд хэдэн RISC зааврыг үүсгэж болох ба суперскаляр дамжуулах хоолой дээр хэд хэдэн тушаалуудыг нэгэн зэрэг гүйцэтгэдэг. Жижиг зааварчилгааг нэгэн зэрэг дагахад хялбар байдаг.

Зааврыг практикт 1-ээс 15 байт хүртэлх хувьсах урттай байтын дараалал хэлбэрээр кодчилдог.

Устгасан боломжууд

x86-64 нь x86-тай харьцуулахад зарим хуучирсан зааврыг устгасан. Эдгээр нь BCD арифметик ба aam (үржүүлэхэд зориулсан ASCII тохируулга) гэх мэт заавар юм. Гэсэн хэдий ч хуучирсан заавруудын ихэнх нь үлджээ.

Горимууд

Энэхүү архитектурын процессорууд нь хоёр үйлдлийн горимыг дэмждэг: Урт горим ("урт" горим) ба Хувийн горим ("өвлөгдсөн", 32 бит x86-тай нийцтэй горим).

урт горим

"Урт" горим - x86-64 процессоруудад зориулсан "уугуул". Энэ горим нь архитектураас олгосон бүх нэмэлт давуу талыг ашиглах боломжийг олгодог. Энэ горимд 64 битийн үйлдлийн систем шаардлагатай.

Энэ горим нь 64 битийн програмуудыг ажиллуулах боломжийг олгодог; 32 битийн програмууд гэх мэт 32 битийн кодыг ажиллуулахад (хоцрогдсон нийцтэй байдлын хувьд) дэмжлэг үзүүлдэг боловч 32 битийн програмууд нь 64 битийн системийн санг ашиглах боломжгүй ба эсрэгээр. Энэ асуудлыг шийдвэрлэхийн тулд ихэнх 64 битийн үйлдлийн системүүд шаардлагатай хоёр багцыг өгдөг системийн файлууд: нэг нь уугуул 64 битийн програмууд, нөгөө нь 32 битийн програмуудад зориулагдсан.

Хуучин горим

Энэхүү "хуучин" горим нь процессорыг x86 процессоруудад зориулагдсан зааврыг гүйцэтгэх боломжийг олгодог бөгөөд 32 битийн код болон үйлдлийн системтэй бүрэн нийцдэг. Энэ горимд процессор нь Athlon эсвэл Pentium III зэрэг x86 процессортой яг адилхан ажилладаг бөгөөд x86-64 архитектурын нэмэлт функцууд (нэмэлт бүртгэл гэх мэт) байхгүй байна. Энэ горимд 64 битийн програмууд болон Үйлдлийн системүүдажиллахгүй.

Энэ горимд дэд горимууд орно:

  • Бодит горим
  • Хамгаалагдсан горим
  • Виртуал 8086 горим

Бодит горимыг MS-DOS-д ашигласан бөгөөд компьютерийг ачаалах үед BIOS-ийн кодыг бодит горимоор гүйцэтгэдэг. Хамгаалагдсан горимыг орчин үеийн олон үйлдэлт үйлдлийн системүүдийн 32 битийн хувилбаруудад ашигладаг. Виртуал 8086 горим нь хамгаалалттай дэд горим бөгөөд голчлон гэж нэрлэгддэгийг бий болгох зорилготой юм. "виртуал DOS машинууд". Хэрэв 32 битээс Windows хувилбаруудХэрэв та 16 битийн DOS програм ажиллуулж байгаа бол энэ процессорын горимыг ашигладаг NTVDM эмулятор ажиллаж байна. Өөр нэг эмулятор DOSBox нь энэ V86 горимыг ашигладаггүй, гэхдээ бүрэн эмуляц хийдэг.

Горимуудын хооронд шилжих

Та дахин ачаалахгүйгээр урт горимоос бодит эсвэл виртуал 8086 горим руу шилжих боломжгүй. Тиймээс NTVDM нь Windows-ийн 64 битийн хувилбаруудад ажиллахгүй бөгөөд та 16 битийн програмуудыг ажиллуулах боломжгүй.

Хамгийн сүүлийн үеийн x86-64 процессор нь бодит горимыг бүрэн дэмждэг. Хэрэв ачааллыг BIOS-оор хийсэн бол ачаалагчийн код (0-р салбараас) бодит горимд ажиллана. Гэсэн хэдий ч, хэрэв BIOS-ийн оронд UEFI ашигладаг бол Урт горимд шилжих нь бүр эрт явагдах бөгөөд бодит горимд ямар ч код ажиллахгүй. Орчин үеийн компьютер тэр даруй 64 битийн урт горимд ажиллаж эхэлдэг гэж бид таамаглаж болно.

Санах ойд хаягийн орчуулга

Энгийнээр хэлэхэд процессор нь автобусаар дамжуулан санах ойд ханддаг. Автобусанд солигдсон санах ойн хаягууд нь физик хаягууд, өөрөөр хэлбэл 0-ээс боломжтой санах ойн дээд хязгаар хүртэлх түүхий тоонууд юм. физик санах ой(жишээ нь, хэрэв танд 8 ГБ RAM суулгасан бол 2 33 хүртэл). Өмнө нь хойд гүүр нь процессор ба санах ойн чипүүдийн хооронд байрладаг байсан бол Intel-ийн хэрэгжилтэд Sandy Bridge-ээс эхлээд процессорын өлгүүрт нэгдсэн байдаг.

Физик хаягууд нь тодорхой бөгөөд эцсийнх - орчуулга, пейжинг, давуу эрх шалгах шаардлагагүй. Чи тэднийг автобусанд суулгаад л болоо. Гэсэн хэдий ч програмууд нь санах ойд хандахаас өмнө физик хаяг руу хөрвүүлэх ёстой логик санах ойн хаягуудыг ашигладаг. Үзэл баримтлалын хувьд орчуулга дараах байдалтай байна.

Энэ бол физик диаграм биш, зөвхөн хаягийг орчуулах үйл явцын тайлбар юм.

Орчуулга нь CPU нь санах ойн хаягтай холбоотой зааврыг гүйцэтгэх үед эхэлдэг. Эхний алхам бол энэ логик хаягийг шугаман хаяг руу хөрвүүлэх явдал юм. Гэхдээ программдаа шугаман хаягийг шууд ашиглахын оронд яагаад үүнийг хийдэг вэ гэж гайхдаг. Энэ бол хувьслын үр дүн юм. X86 сегментчиллийн утгыг үнэхээр ойлгохын тулд бид 1978 он руу буцах хэрэгтэй.

Бодит горимд санах ойн сегментчилэл

16 битийн 8086 процессор нь 16 битийн регистр ашигласан бөгөөд зөвхөн 216 байт санах ойд шууд хаяглах боломжтой. Инженерүүд үүнийг регистрүүдийн битийн гүнийг өргөтгөхгүйгээр их хэмжээний санах ойтой хэрхэн ажиллуулахыг олж мэдсэн.

Өгөгдсөн 16 битийн хаяг нь 64 килобайт санах ойн аль хэсэгт хамаарахыг зааж өгөх ёстой сегментийн регистрүүдийг зохион бүтээжээ.

Энэ шийдэл нь логик юм шиг санагдаж байна: эхлээд та сегментийн бүртгэлийг тохируулж, үндсэндээ "Тиймээс би X хаягаас эхэлдэг санах ойн хэсэгтэй ажиллахыг хүсч байна"; тэгвэл 16 битийн хаягийг тухайн хэсэг дотор офсет болгон ашиглаж байна.

Нийтдээ дөрвөн 16 бит сегментийн бүртгэлийг анх өгсөн бөгөөд дараа нь хоёрыг нэмсэн.

  • CS = Кодын сегмент
  • DS = Өгөгдлийн сегмент
  • ES = Очих хэсгийн хэсэг
  • SS = Стек сегмент

Санах ойн эсийн шугаман хаягийг тооцоолохын тулд процессор нь сегментийн эхлэлийн физик хаягийг тооцоолдог - энэ нь виртуал хаягийн сегментийн хэсгийг 16-аар үржүүлдэг (эсвэл үүнтэй тэнцэхүйц зүүн тийш 4 битээр шилжүүлдэг), мөн дараа нь гарсан тоог сегментийн эхнээс зөрүүтэйгээр нэмнэ. Тиймээс сегментүүд нь хэсэгчлэн давхцаж, нийтдээ 1 МБ орчим физик санах ойг шийдвэрлэх боломжтой болсон. Яагаад сегмент регистрийн утгыг нэн даруй 65536-аар үржүүлж болохгүй гэж асуулт гарч ирнэ, учир нь тэгвэл 4 ГБ санах ойг хаяглах боломжтой болно. Дараа нь энэ нь шаардлагагүй байсан бөгөөд зөвхөн чипний өртөгийг нэмэгдүүлсэн.

Бодит горимд санах ойн хамгаалалт, нэвтрэх эрх байхгүй.

Хөтөлбөрүүд нь жижиг байсан тул тэдгээрийн стек, код нь 64 KB-т бүрэн нийцдэг тул ямар ч асуудал гараагүй. Эртний үеийн Си хэлэнд ердийн заагч нь 16 бит бөгөөд сегменттэй харьцуулахад анхдагч байдлаар чиглүүлдэг байсан ч сегментийн регистрийн утгыг агуулсан хол заагч байдаг.

#оруулна int main() ( char far * p = (char far * ) 0x55550005 ; char far * q = (char far * ) 0x53332225 ; * p = 80 ; (* p) ++; printf ("%d" ,* q ); 0 буцаана;)

Энд хоёр заагч нь ижил физик хаягийг зааж байна 0x55555 .

Хамгаалагдсан горим

32 битийн хамгаалалттай горим нь сегментчилсэн санах ойн загварыг ашигладаг боловч өөр зарчмын дагуу зохион байгуулагдсан: сегментүүдийн байршлыг RAM-д байрлах тусгай бүтцээр (тодорхойлогч хүснэгт) дүрсэлсэн байдаг.

Санах ойн сегментүүдийг мөн ижил сегментийн бүртгэлээр сонгоно. Сегментийн бүртгэлийн утга (сегмент сонгогч) нь түүхий хаяг байхаа больж, үүний оронд дараах бүтэцтэй байна:

Глобал (GDT) ба орон нутгийн (LDT) гэсэн хоёр төрлийн тодорхойлогч хүснэгтүүд байдаг. Глобал хүснэгт нь үйлдлийн системийн сегментүүд болон хуваалцсан өгөгдлийн бүтцийг тодорхойлдог бөгөөд цөм бүр өөрийн гэсэн байдаг. Тодорхой даалгавар (үйл явц) бүрийн хувьд локал хүснэгтийг тодорхойлж болно. TI бит нь GDT-ийн хувьд 0, LDT-ийн хувьд 1 байна. Индекс нь сегментийн тодорхойлогч хүснэгт дэх тодорхойлогчийн дугаарыг зааж өгдөг. RPL талбар нь Requested Privilege Level гэсэн үг юм.

Хүснэгт нь өөрөө 8 байт оруулгуудыг (сегментийн тодорхойлогч) агуулсан массив бөгөөд оруулга бүр нь нэг сегментийг дүрсэлж дараах байдлаар харагдана.

Сегментийн үндсэн хаягаас гадна тодорхойлогч нь сегментийн хэмжээ (илүү нарийвчлалтай, боломжтой хамгийн их офсет) болон санах ойг хамгаалах, сегментэд нэвтрэх эрхийг тодорхойлоход ашигладаг төрөл бүрийн сегментийн шинж чанаруудыг агуулдаг. програм хангамжийн модулиуд. Үндсэн хаяг нь сегментийн эхлэлийг заадаг 32 бит шугаман хаяг бөгөөд хязгаар нь сегмент хэр том болохыг тодорхойлдог. Логик санах ойн хаяг дээр үндсэн хаягийг нэмбэл шугаман хаяг (дахиж 16-аар үржүүлэхгүй) гарна. DPL (Descriptor Privilege Level) - тодорхойлогч давуу эрхийн түвшин; Энэ нь сегмент рүү хандах хандалтыг хянадаг 0-ээс (хамгийн давуу эрхтэй, цөмийн горим) 3 (хамгийн давуу эрхтэй, хэрэглэгчийн горим) хүртэлх тоо юм.

CPU нь 32 битийн горимд байх үед регистр болон заавар нь шугаман хаягийн орон зайг бүхэлд нь хамарч чадна. Тэгвэл яагаад үндсэн хаягийг тэг болгож, логик хаягуудыг шугаман хаягуудтай тааруулж болохгүй гэж? Intel үүнийг "хавтгай загвар" гэж нэрлэдэг бөгөөд үүнийг орчин үеийн x86 цөмүүд яг хийдэг. Энэ нь сегментчиллийг идэвхгүй болгохтой тэнцүү юм.

Урт горим

X86-64 архитектур дээр сегментчлэлийг урт (64 бит) горимд ашигладаггүй. Дөрвөн сегментийн регистрийн (CS, SS, DS, ES) үндсэн хаягийг албадан 0 болгож өгдөг. FS болон GS сегментийн бүртгэлүүд нь тэгээс өөр үндсэн хаягтай байж болно. Энэ нь үйлдлийн системд тэдгээрийг үйлчилгээний зориулалтаар ашиглах боломжийг олгодог.

Жишээлбэл, Microsoft Windows x86-64 дээр GS-ийг Thread Environment Block руу заахдаа ашигладаг бөгөөд энэ нь нэг урсгалын жижиг бүтэц бөгөөд энэ нь онцгой тохиолдлуудыг зохицуулах, урсгалын локал хувьсагчууд болон урсгал бүрийн бусад мэдээллийг агуулсан байдаг. Үүний нэгэн адил Линуксийн цөм нь CPU тус бүрийн өгөгдлийг хадгалахын тулд GS сегментийг ашигладаг.

Дадлага: бүртгэлийг үзэх

(gdb) info registers rax 0x40052d 4195629 rbx 0x0 0 rcx 0x0 0 rdx 0x7fffffffde78 140737488346744 rsi 0x7fffffffde68 140737488346728 rdi 0x1 1 rbp 0x7fffffffdd80 0x7fffffffdd80 rsp 0x7fffffffdd80 0x7fffffffdd80 r8 0x7ffff7dd4e80 140737351863936 r9 0x7ffff7dea700 140737351952128 r10 0x7fffffffdc10 140737488346128 r11 0x7ffff7a32e50 140737348054608 r12 0x400440 4195392 r13 0x7fffffffde60 140737488346720 r14 0x0 0 r15 0x0 0 rip 0x400531 0x400531 eflags 0x246 [ PF ZF IF ] cs 0x33 51 ss 0x2b 43 ds 0x0 0 es 0x0 0 fs 0x0 0 gs 0x0 0

Хамгаалалтын цагираг

Intel x86 компьютер дээр програмууд хязгаарлагдмал зөвшөөрөлтэй бөгөөд зөвхөн үйлдлийн системийн код нь тодорхой ажлуудыг гүйцэтгэх боломжтой гэдгийг та зөн совингоор мэдэж байгаа байх. Хэрхэн ажилладаг? x86 давуу эрхийн түвшин нь үйлдлийн систем болон CPU нь хэрэглэгчийн горимын программуудын боломжийг хязгаарлах механизм юм. 0 (хамгийн давуу эрхтэй) - 3 (хамгийн бага эрхтэй) хүртэлх дөрвөн түвшний давуу эрх, санах ой, оролт гаралтын портууд, машины тодорхой зааврыг гүйцэтгэх чадвар гэсэн гурван үндсэн нөөц байдаг. Ямар ч үед x86 процессор нь ямар код хийж болох, юу хийх боломжгүйг тодорхой давуу эрхтэйгээр ажиллуулдаг. Эдгээр эрх ямбаны түвшинг ихэвчлэн хамгаалалтын цагираг гэж тодорхойлдог бөгөөд хамгийн дотоод цагираг нь хамгийн дээд давуу эрхэд нийцдэг. Ихэнх орчин үеийн x86 цөмүүд зөвхөн Ring 0 ба Ring 3-ыг ашигладаг.

виртуал хаягийн орон зай

Виртуал хаягууд нь 64 бит өргөнтэй хэдий ч одоогийн хэрэгжүүлэлтүүд (болон боловсруулж байгаа бүх чипүүд) 264 байт (16 экзабайт) виртуал хаягийн орон зайг бүхэлд нь ашиглахыг зөвшөөрдөггүй. Энэ нь 32 битийн машин дээрх виртуал хаягийн зайнаас дөрөв тэрбум дахин их байх болно. Ойрын ирээдүйд ихэнх үйлдлийн системүүд болон хэрэглээний программуудад ийм том хаягийн орон зай шаардлагагүй тул ийм өргөн виртуал хаягуудыг хэрэгжүүлэх нь зүгээр л хаяг орчуулгын нарийн төвөгтэй байдал, зардлыг өсгөхөд бодит ашиг тусгүй болно. Тиймээс AMD нь архитектурын анхны хэрэгжилтэд хаягийн орчуулгад зөвхөн виртуал хаягийн доод 48 битийг ашиглахаар шийдсэн.

Нэмж дурдахад, AMD-ийн техникийн үзүүлэлтүүд нь аливаа виртуал хаягийн дээд 16 бит буюу 48-аас 63 хүртэлх битүүд нь 47-р битийн хуулбар байх ёстой (тэмдгийн өргөтгөлийн зарчмаар). Хэрэв энэ шаардлагыг хангаагүй бол процессор онцгой тохиолдол гаргах болно. Энэ дүрэмд нийцсэн хаягуудыг "каноник хэлбэр" гэж нэрлэдэг. Каноник хаягууд нь ашиглах боломжтой виртуал хаягийн зайг 256 терабайт хүртэл нэмдэг. Энэ нь 32 битийн машинуудын 4 ГБ виртуал хаягийн зайнаас 65536 дахин их байна.

Энэ конвенц нь шаардлагатай бол жинхэнэ 64 бит хаяглалт руу өргөтгөх боломжийг олгодог. Олон үйлдлийн системүүд (Windows NT гэр бүл болон GNU/Linux гэх мэт) хаягийн зайны дээд талыг (цөмийн зай) авч, доод талыг (хэрэглэгчийн зай) програмын код, хэрэглэгчийн горимын стек, овоо болон бусад өгөгдлийн талбарт хадгалдаг. . "Каноник хаяг" загвар нь AMD64-тэй нийцтэй хэрэгжүүлэлт бүр үндсэндээ хоёр хагас санах ойтой байхыг баталгаажуулдаг: доод тал нь илүү олон виртуал хаягийн битүүд боломжтой болох тусам "өсдөг" ба дээд тал нь эсрэгээр хаягийн зайны дээд талд болон доошоо ургадаг.

Windows-ийн эхний x64 хувилбарууд нь 256 TB-г бүрэн ашигладаггүй байсан; тэдгээр нь зөвхөн 8 TB хэрэглэгчийн зай, 8 TB цөмийн зайгаар хязгаарлагдаж байсан. 2013 оны 10-р сард гарсан Windows 8.1-д 48 битийн хаягийн орон зай бүхэлдээ дэмжигдсэн.

Хуудасны хүснэгтийн бүтэц

32 битийн x86 системд ашигладаг хоёр түвшний хуудасны хүснэгтийн системийн оронд урт горимд ажилладаг системүүд хуудасны хүснэгтийн дөрвөн түвшнийг ашигладаг.

Боломжит хуудасны хэмжээ:

  • 4 KB (2 12 байт) - хамгийн түгээмэл хэрэглэгддэг (x86-тай ижил)
  • 2 МБ (2 21 байт)
  • 1 ГБ (2 30 байт)

Бүтэн 48 битийн зайд зориулсан бүтэн 4K хуудасны зураглалын шатлал нь 512 ГБ-аас бага зэрэг илүү RAM (256 ТБ виртуал зайны 0.195%) эзэлнэ.

Дасгал: Хэр удахгүй унах вэ?

Энэ код нь стандартын дагуу буруу, Undefined Behavior-ыг агуулсан, хэрэв тийм бол хөрвүүлэгч юуг ч хийж чадна, жишээлбэл, огт сүйрэхгүй байх нь ойлгомжтой. Гэсэн хэдий ч хэрэв та үүнийг x86-64 дээр ажиллуулбал тодорхой мөчид гацах болно ...

#оруулна #оруулна charbuf[1]; #define PAGE_SIZE 4096 int main() ( char * ptr = buf; for (;; ) ( int offset = (intptr_t ) ptr % PAGE_SIZE; printf ("%p: offset = %d" \n", ptr, офсет); *ptr = "a" ; // Сегментийн алдаа хүлээгдэж байна!++ ptr; ) буцаана 0 ; )

Зохион байгуулалт, функцийн дуудлагыг стек

x86-64-д x86-тай харьцуулахад ерөнхий зориулалтын регистрүүдийн тоо мэдэгдэхүйц нэмэгдсэн (хоёр дахин) нь сайн мэдээ юм. Тиймээс санах ойд бага стек ашиглахын зэрэгцээ функц руу аргумент дамжуулахын тулд илүү олон регистр ашиглаж болох бөгөөд ингэснээр функцийн дуудлагыг хурдасгана.

x86-д стек

Стек доошоо ургадаг. Стекийн дээд хэсэг нь үнэндээ хамгийн бага хаягтай.

Тусгай регистр rsp (Stack Pointer) ашигладаг.

Заавар

түлхэх ракс

-тэй тэнцүү байна

Sub rsp, 8 mov, rax

Заавар

-тэй тэнцүү байна

Mov rax, rsp, 8 нэмнэ

Линукс дээрх дуудлагын конвенц

Линукс болон бусад үйлдлийн системүүд нь System V AMD64 ABI конвенцийг ашигладаг.

Энгийн байхын тулд бид бүхэл тооны аргументууд болон заагчаар өөрсдийгөө хязгаарлах болно.

Эхний зургаан аргументыг регистрээр дамжуулдаг:

Хэрэв энэ нь хангалтгүй бол долоо дахь аргумент аль хэдийн стекээр дамжсан болно.

Хэрэв функц rbx, rbp, r12–r15 регистрүүдийг ашиглахыг хүсвэл гарахаасаа өмнө тэдгээрийг дахин тохируулах ёстой.

64 бит хүртэлх буцах утгыг rax-д, 128 бит хүртэл - rax болон rdx-д хадгална.

стек хүрээ

Ийм функцийн хувьд

урт myfunc(урт a, урт b, урт c, урт d, урт e, урт f, урт g, урт h) ( урт xx = a * b * c * d * e * f * g * h; урт yy = a + b + c + d + e + f + g + h; урт zz = utilfunc(xx, yy, xx % yy) ; буцах zz + 20 ; )

стек дараах байдлаар харагдах болно.

Улаан бүс (улаан бүс)

RSP-ээр заасан байршлын гаднах 128 байт талбайг нөөцөд тооцсон бөгөөд дохио эсвэл тасалдал зохицуулагчаар өөрчлөх ёсгүй. Функцууд нь функцийн дуудлагад шаардлагагүй түр зуурын өгөгдөлд энэ хэсгийг ашиглаж болно. Ялангуяа хуудасны функцууд (өөр ямар ч функц дуудагддаггүй) гүйцэтгэлийн эхэн ба төгсгөлд стек заагч rsp-ийг өөрчлөхийн оронд энэ мужийг бүхэлд нь стекийн хүрээнд ашиглаж болно.

Энэ бол оновчлол юм. Багасгах, нэмэгдүүлэх rsp нь аль хэдийн хоёр заавар, тэдгээр нь хадгалагдаж болно.

Жишээлбэл:

урт utilfunc(урт a, урт b, урт в) ( урт xx = a + 2 ; урт yy = b + 3 ; урт zz = c + 4 ; урт нийлбэр = xx + yy + zz; буцах xx * yy * zz + нийлбэр;)

Үндсэн хүрээ заагчийг хадгалж байна

rbp заагч (мөн түүний өмнөх x86 дээрх ebp) нь функцийг гүйцэтгэх явцад стекийн фрэймийн дээд хэсэгт байрлах тогтвортой "хаяг" байдаг тул гараар програмчлах болон дибаг хийхэд маш тохиромжтой. Хэсэг хугацааны өмнө хөрвүүлэгчийн үүсгэсэн код нь rbp шаардлагагүй болохыг анзаарсан (хөрвүүлэгч нь rsp-ээс офсетийг хялбархан хянах боломжтой).

Тийм ч учраас зарим хөрвүүлэгчид түрэмгий оновчлолд үндсэн заагчийг алгасаж эхэлсэн бөгөөд ингэснээр функцийн пролог болон эпилогийг богиносгож, ерөнхий зорилгоор нэмэлт бүртгэлээр хангадаг.

gcc нь x86 үндсэн заагчийг хадгалдаг боловч -fomit-frame-pointer эмхэтгэлийн туг ашиглан оновчтой болгохыг зөвшөөрдөг.

Ямар ч байсан AMD64 ABI-ийн нэвтрүүлсэн өөр нэг "шинэ зүйл" нь үндсэн заагчийг нэмэлт сонголттой болгодог. gcc нь энэ зөвлөмжийг дагаж мөрдөж, оновчлолыг хөрвүүлэхдээ анхдагчаар x64 хүрээ заагчийг орхигдуулдаг. Энэ нь -fno-omit-frame-заагч тугийг зааж хадгалах сонголтыг өгдөг.

Windows дээр дуудлага хийх дүрэм

Өө, дахиад cdecl/stdcall/fastcall/thiscall/register/safecall байхгүй, ганцхан дуудлагын конвенц үлдлээ! Гэхдээ үгүй, Microsot вектор дуудлагыг хөгжүүлсэн...

Эхний дөрвөн аргументыг регистрүүдээр дамжуулдаг: rcx, rdx, r8, r9.

rbx, rbp, rdi, rsi, rsp, r12, r13, r14, r15 регистрүүдийг функцээр дахин тохируулах ёстой.

Дадлага: тоонуудын нийлбэр 3 : c3 ret

Системийн дуудлага

Системийн дуудлагыг гүйцэтгэх механизмууд

C функцууд

Та C кодоос open() , write() , getpid() гэх мэт системийн функцийг дуудахдаа систем өөрөө шууд дуудагдахгүй. Яг үүнтэй адил хэрэглэгчийн горимоос (цагираг 0) цөмийн горимд байгаа функцийг дуудвал ажиллахгүй болно. Стандарт номын санд хэрэгждэг ердийн функцуудыг дууддаг бөгөөд аль хэдийн дотор нь аль нэг аргаар системийн дуудлага хийдэг.

  • програм хангамжийн тасалдлаар,
  • системийн дуудлагын заавраар дамжуулан,
  • sysenter заавраар дамжуулан.

Програм хангамжийн тасалдал

Тасалдал нь одоогийн кодын гүйцэтгэлийг тасалдуулж (тийм учраас тэдгээрийг тасалдал гэж нэрлэдэг байсан) процессорт дохио өгч, зохицуулагчийн заасан зүйлийг яаралтай хийх шаардлагатай болдог.

Тасалдал нь процессорын гүйцэтгэж буй одоогийн кодыг тасалдуулах шаардлагатай өндөр ач холбогдолтой үйл явдал болсныг процессорт мэдэгдэнэ. Процессор нь одоогийн үйл ажиллагаагаа түр зогсоож, төлөвөө хадгалж, тухайн үйл явдалд хариу үйлдэл үзүүлж, түүнд үйлчилдэг тасалдал зохицуулагч (эсвэл тасалдлын зохицуулагч) хэмээх функцийг гүйцэтгэх замаар хариу үйлдэл үзүүлж, дараа нь тасалдсан код руу хяналтыг буцаана.

Програм хангамжийн тасалдал нь тусгай заавар ашиглан программ хэрэгжүүлж болох синхрон тасалдлыг хэлнэ.

X86 процессоруудад синхрон тасалдлыг тодорхой дуудахын тулд int заавар байдаг бөгөөд түүний аргумент нь тасалдлын дугаар юм (0-ээс 255 хүртэл). Хамгаалалттай, урт горимд тогтмол хөтөлбөрүүдүйлчилгээний тасалдлыг хийх боломжгүй, энэ функцийг зөвхөн системийн код (үйлдлийн систем) ашиглах боломжтой.

Линукс дээр 0x80 тасалдлын дугаарыг системийн дуудлагыг гүйцэтгэхэд ашигладаг. Тасалдал зохицуулагч 0x80 нь Линуксийн цөм юм. Програм нь тасалдлыг гүйцэтгэхийн өмнө гүйцэтгэх системийн дуудлагын дугаарыг eax бүртгэлд байрлуулдаг. Удирдлага 0 дуугарахад цөм энэ дугаарыг уншиж, хүссэн функцийг дуудна.

Энэ аргыг 32 битийн системд өргөн ашигладаг байсан бол 64 битийн системд энэ нь хуучирсан гэж тооцогддог бөгөөд ашиглагдаагүй боловч хэд хэдэн хязгаарлалттай (жишээлбэл, та лекц дээр жишээ үзүүлсэн) ажилладаг. 64 битийн заагчийг параметр болгон дамжуулах боломжгүй).

  • Системийн дуудлагын дугаарыг eax-д оруулна уу.
  • Аргументуудыг ebx , ecx , edx , esi , edi , ebp регистрүүдэд оруулна.
  • Дуудлагын заавар int 0x80 .
  • eax-аас үр дүнгээ аваарай.

Ассемблер дээрх mygetpid() (одоогийн үйл явцын PID-г авах)-ын хэрэгжилтийн жишээ (getpid системийн дуудлагад 20-ын тоог ашигладаг):

Intel_syntax noprefix. globl mygetpid .text mygetpid: mov eax , 20 int 0x80 ret

системийн командын заавар

Энэ нь 64 битийн Линукс дээр хэрэглэгддэг илүү орчин үеийн арга бөгөөд илүү хурдан юм.

  • Системийн дуудлагын дугаарыг rax-д байрлуулсан.
  • Аргументуудыг rdi , rsi , rdx , r10 , r8 болон r9 дээр бичдэг.
  • Дараа нь syscall дуудагдана.
  • Үр дүн нь ракс.

Ассемблер дээр mygetpid () (одоогийн үйл явцын PID-г авах) хэрэгжүүлсэн жишээ (хүснэгт дээрх getpid системийн дуудлагын хувьд 39 дугаарыг ашигладаг):

Intel_syntax noprefix . globl mygetpid .text mygetpid: mov rax , 39 syscall ret

Системийн дуудлагыг хянах

Линукс дээр strace хэрэглэгчийн горимын хэрэгсэл нь тухайн программын хийж буй системийн дуудлагыг хянах боломжийг олгодог.