Sunday, June 27, 2010

INTEL x86

Түүх

1978 онд INTEL-нхэн хуучны 8 битийн(8080 8008 8085) микропроцессороо өргөтгөн 16 битийн 8086 микропроцессор гаргаж байсан. Энэ нь одоогийн х86 архитектурын үндэс юм.

INTEL компани нь 1982 онд 16 битийн х86 процессортой INTEL80186 буюу та бидний сайн мэдэх 1-86 компьютерээ гаргаж байсан. Уг процессор нь 6MHz-25MHz давтамжинд ажилладаг 1МВ санах ойтой. Тухайн жилдээ INTEL –нхэн 1-86 сайжруулан санах ойн хэмжээг 16МВ хүртэл ихэсгэж Multitasking буюу олон программ зэрэг ажлуулдаг болгон 2-86 компьютерийг гаргасан. 1985 онд INTEL 3-86, AMD AM386 компьютер гаргасан нь хамгийн анхны 32 битийн х86 архитектуртай компьютерууд байсан юм. Харин 1989 онд х86 процессорт pipelining буюу зэрэгцээ боловсруулалт хийдэг болсноор түүний хүчин чадал эрс нэмэгдсэн. Үүнээс хойш 4-86, Pentium pro, Pentium 2, Pentium 3, Pentium 4 гэх мэтчилэн улам дэвшингүй хөгжсөөр 2004 онд анхны 64 битийн х86 процессортой Pentium 4 Prescott, AMD Athlon64 гарсан. Өнөө үед INTEL-н Core2duo, Core i3, Core i5, Core i7, AMD Athlon, Opteron, Phenom зэрэг өндөр хүчин чадал бүхий процессорууд бүгд х86 архитектуртай байдаг.

Х86 архитектур нь CISC архитектур дээр суурилагдсан бөгөөд орчин үед энэ нь илүү дэвшилтэд болж CISC RISC хоёр

ын холимог архитектур болсон.

Дотоод бүтэц














Санах ойн хаяглалт

Анхны х86 буюу 8086 болон 1-86 нь 1МВ санах ойтой байсан бөгөөд 16 битийн процессор учраас хаягийн шугамны өргөн нь буюу хаягийн регистрийн урт нь 16 бит байна. Иймд хаяглаж чадах дээд хэмжээ нь 216=64КВ юм. Дээр нь 4 битийн сегмент сонгуурийн регистртэй бөгөөд нийт 24=16 сегменттэй. Ингээд нийтдээ 64КВ –н 16 сегменттэй гэхээр 1МВ санах ойтой болж байна.

Харин 32 болон 64 битийн процессорын хувьд санах ойн хаягийн регистр нь мөн 32 болон 64 бит байдаг учраас ихээхэн хэмжээний санах ойг хаяглах хүчин чадалтай.

64 битийн х86 процессорын хаяг нэгтгэх функц





Регистр ба командууд

64 битийн х86 процессор нь нийтдээ 69 регистртэй бөгөөд ерөнхий зориулалтын болон заагч регистрүүдийн урт нь 64 бит байдаг. Ерөнхий зориулалтын регистр гэдэг нь хамгийн өргөн хэрэглэгддэг регисртүүд бөгөөд жишээлбэл Аккумлятор регистр, тоолуур регистр, өгөгдлийн регистр зэрэг багтана. Мөн 64 битийн х86 процессор нь 16 битийн 6 сегмент регистртэй бөгөөд хаяглаж чадах санах ойн дээд хэмжээ нь 264*216*6 болно.

Харин процессор нь санах ойтойгоо 7 янзаар харицдаг бөгөөд үүнийг өөрөөр санах ойн хаяглах арга ч гэж хэлдэг. Энэ тухайн агшинд хийгдэж байгаа командаас шалтгаалдаг. Команд нь opcode(командын машин код) болон operand(үйлдэлд орох өгөгдөл болон өгөгдлийн санах ойн хаяг) хоёроос тогтох бөгөөд тухайн ком

андаасаа шалтгаалан хэдэн ч operand-тай байж болдог.

z Immediate(шууд)

Энэ нь тухайн кома

нд өөртөө шууд өгөгдлөө агуулдаг бөгөөд санах ойтойгоо шууд харьцана. Жишээ нь: ADD 5 үүнд 5 нь өгөгдөл бөгөөд аккумляторт 5-г олгоно.

z Direct( санах ойн шууд)

Энэ нь тухайн команд нь өгөгдлийнхөө санах ойн хаягийг агуулдаг.

Жишээ нь: ADD A үүнд А нь өгөгдлий

н санах ойн хаяг бөгөөд аккумлятор нь энэ хаягаар дамжиж өгөгдлөө авна. Гэхдээ энэ нь бага хэмжээний санах ойд ашиглагдана.

z Indirect( санах ойн шууд бус)

Энэ нь тухайн команд өгөгдлийнхөө санах ойн за

агч хаягийг агуулдаг бөгөөд томоохон хэмжээний санах ойтой харьцхад ашиглана. Жишээ нь: ADD (A)


z Register( регистрээр шууд)

Энэ нь регистрт өгөгдөл байрлах бөгөөд үйлдэл хийхдээ тухайн регистрээсээ өгөгдлөө авна. Жишээ нь: R8= 5; EA = R8; үүний үр дүнд EA = 5 болно.

z Register Indirect( регистрээр шууд бус )

Энэ нь регистрт өгөгдлийн санах ойн хаяг байрлах бөгөөд үйлдэл хийхдээ тухайн регистрдэх өгөгдлийн хаягаар дамжина.Жишээ нь: 0x00075 => 5 ; R8= 0x00075; EA = (R8); үүний үр дүнд EA = 5 болно.


z Displacement (Indexed)

Энэ нь өгөгдлөө 2 хаягийн нийлбэрээр гаргаж авдаг бөгөөд нэлээн том хэмжээний санах ойгоос буюу сегментчлэгдсэн санах ойтой харьцахад хэрэглэнэ.

z Stack( стек ой)

Энэ нь стек ойд өгөгдлөө түр хийгээд дараа нь буцааж стек ойгоос гаргаж авдаг. Годуу цөөхөн регистр ашиглаж байгаа нөхцөлд хэрэглэдэг. Жишээ нь: R9=5; push R9; R9=7; …..; pop R9; үүний дараа дунд нь R9-д ямарч утга олгосон бай одоо 5 гэсэн утга байна.

Ажиллагааны горимууд

Х86 процессор нь нийтдээ 4 төрлийн ажиллагааны горимтой:

1. Бодит горим(real mode)

2. Хамгаалагдсан горим(protected mode)

3. Хийсвэр горим(virtual mode)

4. Холын горим (long mode)

Бодит горим

Энэ нь хамгийн анхны х86 процессорын ажиллагааны горим бөгөөд санах ойгоо 20 бит буюу 1МВ сегментэд хуваан ажилладаг байсан. Өөрөөр хэлбэл хийсвэр хаяг буюу хуудаслалт сегментлэл гэж байхгүй дан физик хаягаар хандан ажилладаг. Орчин үеийн х86 процессор нь зөвхөн Reset хийгдсэн үед л энэ горимд ажилладаг.


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

Энэ горим нь хамгийн анх 3-86 процессорт тавигдсан бөгөөд энэ горим бий болсоноор олон программ зэрэг ажиллах болон үйлдлийн систем нь программ хангамжуудаа удирдахад хялбар болсон. Мөн энэ горим бий болсоноор санах ойг хуудаслах, хийсвэр санах ой байгуулах зэрэг давуу талууд бий болсон.

Хийсвэр горим

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

Холын горим

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

Та бүхэндээ INTEL болон AMD процессоруудын суурь болсон х86 архитектурын тухай хүргэлээ. Дараагийн нийтлэлээрээ санах ойн тухай болон бүтэц зохион байгуулалтын тухай хүргэнэ.





No comments: