X86

С Википедије, слободне енциклопедије
Intel 8086.
Intel Core 2 Duo - пример једне x86-компатибиланости, 64-битним вишејезгарни процесора.
AMD Athlon (старија верзија) - другачија технологија, али задовољава, x86 имплементацију.

Термин x86 означава породицу компатибилног скупа инструкција архитектуре[1] заснованих на Intel 8086 CPU. 8086 је уведен 1978. године, као потпуно 16-битни наставак Intel-ове 8-битне серије засноване на 8080 микропроцесору, са мeморијском сегментацијом као решењем за адресирање више мeморије него што би било могуће покрити обичним 16-битним адресама. Термин x86 је изведен из чињенице да су ранији наследници 8080, такође имали имена са завршетком "86".

Многа додавања и проширења су била додата на x86 скуп инструкција током година, већином доследно са пуном компатибилношћу претходних процесора.[2] Архитектура је имплементирана у процесор од Intel-а, Cyrix-а, AMD-а, VIA и многих других компанија.

Термин није синоним са IBM PC компатибилношћу јер то подразумева мноштво другог рачунарског хардвера; уграђени системи као и рачунари опште намене користили су x86 чипове пре него што је стартовало PC-компатибилно тржиште,[3] неки од њих пре самог IBM PC-а.

Преглед[уреди | уреди извор]

У 1980. и раним 1990. годинама када су 8088 и 80286 и даље били у општој употреби, термин x86 обично је представљао било који 8086 компатибилни CPU. Данас, међутим, x86 обично подразумева бинарну компатибилност такође са 32-битним скупом инструкција од 80386. То је због чињенице да је овај скуп инструкција постао нешто као најмањи заједнички именилац за многе оперативне системе, а вероватно и због тога што је постао уобичајени термин након увођења 80386 у 1985. години.

Термин x86 понекад може се истаћи као x86-32 [4] да би се разликовао од или оригиналног 16-битног "x86-16" или од 64-битног x86-64.[5] Иако се већина x86 процесора, који се користе у новим персоналним рачунарима и серверима, има 64-битну компатибилност, да би се избегли проблеми са компатибилношћу са старијим рачунарима или системима, термин x86-64 (или x64) се често користи да означи 64-битни софтвер, са термином x86 који тренутно имплицира само 32-бита.[6][7]

Иако је 8086 првенствено развијен за уграђене системе и мале једно-корисничке рачунаре, у великој мери као одговор на успешну 8080-компатибилност Zilog Z80,[8] линији x86 убрзо су порасле карактеристике и процесорска снага. Данас, x86 је свеприсутан у стационарним и преносивим персоналним рачунарима и заменио је опсег средњих рачунара и рачунара са смањеним скупом инструкција (RISC) заснованих рачунара већином од сервера и радних станица. Велика количина софтвера, који укључују оперативне системе (OS) као што су DOS, Microsoft Windows, Linux, BSD, Solaris и Mac OS X функционишу са x86 заснованим хардвером.

Модеран x86 је релативно редак у уграђеним системима, међутим, и мале апликације са ниском потрошњом енергије (које користе мале батерије) као и јефтино миксопроцесорско тржиште, као што су кућни апарати и играчке, немају никакво значајно x86 присуство.[9] Једноставна 8-битна и 16-битна архитектура су заједничке овде, иако x86-компатибилан VIA C7, VIA Nano, AMD Geode, Athlon Neo и Intel Atom су примери 32- и 64-битног дизајна који се користе са релативно малом снагом и јефтиним сегментима.

Било је неколико покушаја, укључујући и сам Intel, да прекине тржишну доминацију "нелегалне" x86 архитектуре дизајниране директно од првих једноставних 8-битних микропроцесора. Примери за то су iAPX 432 (друго име Intel 8800), Intel 960, Intel 860 и Intel/Hewlett-Packard Itanium архитектура. Међутим, континуирано пречишћавање x86 микроахитектуре, кола и производње полупроводника направили су потешкоће у замени x86 у многим сегментима. AMD-ово 64-битно проширење x86 (којим је Intel коначно одговорио да је са компатибилним дизајном)[10] и скалабилност x86 чипова као што су осмојезгарни Intel Xeon и 12-језгарни AMD Opteron су подвукли x86 као пример како континуирано пречишћавање утврђених индустријских стандарда може одолети конкуренцији од потпуно нових архитектура.[11]

Хронологија[уреди | уреди извор]

У доњој табели су наведени брендови заједничких[12] потрошачких циљаних процесора који имплементрају x86 скуп инструкција, који су груписани по генерацијама које наглашавају важне догађаје x86 историје. Напомена: CPU генерације нису строге – сваку генерацију одликује значајно побољшање или комерцијални успех дизајна процесорске микроархитектуре.

Генерација Први пут представљен Истакнути потрошач CPU бренда Линеарни/физички адресни простор Значајне (нове) функције
1 1978 Intel 8086, Intel 8088 и колонови 16-бита / 20-бита (сегментирана) Први x86 микропроцесор
1982 Intel 80186, Intel 80188 и колонови, NEC V20/V30 Хардвер за брзо израчунавање адреса, брзо множење/дељење, итд.
2 Intel 80286 и колонови 16-бита(30-бита виртуелно)/24-бита(сегментирана) MMU, за заштићени режим и већи адресни простор.
3 (IA-32) 1985 Intel 80386 и колонови, AMD Am386 32-бита (46-бита виртуелно)/32-бита 32-битни скуп инструкција са MMU страничењем
4 (FPU) 1989 Intel 80486 и колонови, AMD Am486/Am5x86 RISC-попуп проточне обраде, x87 FPU (80-бита), на чипу кеш.
4/5 1997 IDT/Centaur-C6, Cyrix III-Samuel, VIA C3-Samuel2 / VIA C3-Ezra (2001), VIA C7 (2005) У циљу, интегрисаног FPU, неки модели са два L2 кеша на чипу, MMX, SSE.
5 1993 Pentium, Pentium MMX, Cyrix 5x86, Rise mP6 Суперскалар, 64-битна магистрала података, бржи FPU, MMX (2× 32-бита).
5/6 1996 AMD K5, Nx586 (1994) μ-op превођење.
6 1995 Pentium Pro, Cyrix 6x86, Cyrix MII, Cyrix III-Joshua (2000) Као горе наведено/ 36-битни физички (PAE) μ-op превођење, условни потези инструкција, out-of-order, преименовање регистара, спекулативно извршење, PAE (Pentium Pro), у пакету L2 кеш (Pentium Pro).
1997 AMD K6/-2/3, Pentium II/III L3-кеш подршка, 3DNow!, SSE (2× 64-бита).
2003 Pentium M, Intel Core (2006) оптимизован за мале снаге.
7 1999 Athlon, Athlon XP Супер скаларни FPU, широки дизајн (до три x86 инструкције/генераторском такту
2000 Pentium 4 Дубока проточна обрада, висока фреквенца, SSE2, hyper-threading.
7/8 2000 Transmeta Crusoe, Transmeta Efficeon VLIW дизајн са x86 емулатором, меморијски контролер на чипу.
2004 Pentium 4 Prescott 64-бита/64-бита физички у првој AMD имплементацији Веома дубока проточна обрада, веома висока фреквенца, SSE3, 64-битно способан (целобројни CPU) је само доступан у LGA 755 подножју.
2006 Intel Core 2 64-битна (целобројн CPU), мала потрошња, вишејезгарни, мања фреквенција генератор такта, SSE4 (Penryn).
2008 VIA Nano Спољна употреба, суперскаларни, 64-битна (целобројн CPU), хардверски-базирана енкрипција, веома мала потрошња, адаптивно управљање потрошњом.
8 (x86-64) 2003 Athlon 64, Opteron x86-64 скуп инструкција (CPU главно целобројно језгро), меморијски контролер на чипу, хипертранспорт.
8/9 2007 AMD Phenom Као што је горе/48-биза физички за AMD Phenom MМонолитни четворојезгарни, SSE4a, хипертранспорт или QuickPath, матерни меморијски контролер, L3 кеш на чипу, модуларни.
2008 Intel Core i3/i5/i7, AMD Phenom II
Intel Atom In-order али висока проточна обрада, веома мала потрошња, на неким моделима: 64-битна (целобројн CPU), на чипу GPU.
2011 AMD Bobcat, Llano Ван употребе, 64-битна (целобројн CPU), на чипу GPU, мала потрошња (Bobcat).
9 (GPU) 2011 Intel Sandy Bridge/Ivy Bridge, AMD Bulldozer и Trinity SSE5/AVX (4×64-бита), високо модуларни дизајн, интегрисани на чипу GPU.
2013 Intel Haswell AVX2, FMA3, TSX, BMI1, и BMI2 инструкције.

(MIC pilot)
2012 Intel Xeon Phi (Larrabee) Много интегрисаних језгара (62), In-order P54C са x86-64, веома широка векторска јединица, LRBni инструкције (8× 64-бита).

Историја[уреди | уреди извор]

Позадина[уреди | уреди извор]

X86 архитектура је први пут коришћена у Intel 8086 централној процесорској јединици (CPU) објављена током 1978. године, потпуно 16-битни дизајн био је заснован на раним 8-битном 8008 и 8080. Иако бинарно некомпатибилан, био је дизајниран да омогући програме асемблерског језика писане за ове процесоре (као и савремени 8085) да буду механички преведени на еквивалентни 8086 склоп. Ово је направило да нови процесор буде са примамљивим софтверским миграционим путем за многе купце. Међутим, 16-битна спољна магистрала података од 8086 подразумева прилично значајан редизајн хардвера, као и друге компликације и трошкове. Да би решили ову препреку, Intel је представио скоро индентичан 8088, у основи 8086 са 8-битном екстерном магистралом података која допушта једноставније штампане плоче и захтева мање (1-битне ширине) DRAM чипове; било је такође једноставније повезати се на већ успостављен (нпр. ниске цене) 8-битни систем и периферне чипове. Између осталог, не-техничких фактори, ово је допринело да IBM одлучи да дизајнира кућни рачунар/персонални рачунар заснован на 8088, упркос присуству 16-битног микропроцесора од Motorola, Zilog, и National Semiconductor (као и неколико успостављених 8-битних процесора, који су се такође разматрали). Добијен IBM PC касније је постао приоритетан за Z80 заснован CP/M систем, Apple IIs, и других популарних рачунара као de facto стандард за персоналне рачунаре, чиме се омогућава да 8088 и његови наследници доминирају овако великим делом тржишта микропроцесора.

iAPX 432 и 80286.[уреди | уреди извор]

Други фактор је био да непредни али не-компатибилни 32-битни Intel 8800 (alias iAPX 432) није успео на тржишту у време када је оригинални IBM-PC покренут; нови и брз 80286, заправо је допринео у разочарењу у односу на перформансе полу-савременог 8800. током ране 1982. године (80186, покренут истовремено са 80286, био је намењен за уграђене системе, па би стога имао у сваком случају велико тржиште). Тржишни неуспех 32-битног 8800 био је значајан подстицај за Intel да настави да развија напредије 8086 компатибилне процесоре, као што је 80386 (32-битно проширење добро обављеног 80286).

Остали произвођачи[уреди | уреди извор]

Am386 који је пустио у продају AMD у 1991. години

У различата времена, компаније као што су IBM, NEC,[13] AMD, TI, STM, Fujitsu, OKI, Siemens, Cyrix, Intersil, C&T, NexGen, UMC, и DM&P почеле су да дизајнирају и/или производе x86 процесоре (CPU) намењене персоналним рачинарима као и уграђеним системима. Такве x86 имплементације су ретко једноставне копије, али често користе различите унутрашње микроархитектуре као и различита решења у електронским и физичким нивоима. Савим природно, рани компатибилни микропроцесори су 16-битни, док су 32-битни развијени много касније. За тржиште персоналних рачунара, реалне количине су почеле да се појављују око 1990. године са i386 и i486 компатибилним процесорима, често под називом слично Intel-овим оригиналним чиповима. Друге компаније, које дизајнирају или производе x86 или х87 процесоре, укључују ITT Corporation, National Semiconductor, ULSI System Technology, и Weitek.

Након што је следила потпуно проточна обрада i486, Intel је представио бренд име Pentium (који, за разлику од бројних других, могао бити заштићен) за свој нови скуп суперскаларног x86 дизајна. Са x86 именованом шемом сада легално очишћеном, IBM се удружио са Cyrix да произведе 5x86, а затим врло ефикасан 6x86 (M1) и 6x86MX (MII) линије Cyrix дизајна, који су били први x86 микропроцесори који имплементирају регистарско преименовање да омогуће спекулативно извршење. AMD је у међувремену дизајнирао и произвео напредни али закаснели 5k86 (K5), који је, интерно, био уско базиран на AMD-ов рани 29K RISC дизајн; слично као NexGen's Nx586, он користи стратегију тако да прикаже стање проточне обраде декодираних x86 инструкција у уједначеним и лако рукујућим микрооперацијама, метод који је остао основа за већину x86 дизајна до данашњег дана.

Неке ране верзије ових микропроцесора су имале проблем одвођења топлоте. 6x86 је такође погођен са неколико мањих компатибилних проблема, Nx586 је имао недостатак покретног зареза (FPU) и (тадашње кључне) пин-компатибилности, док је К5 имао нешто разочаравајући учинак када је (коначно) уведен. Корисничко незнање о алтернативи за Pentium серију додатно је допринело да ти дизајни буду неуспешни, упркос чињеници да је К5 имао веома добру Pentium компатибилност и 6x86 је био знатно бржи од Pentium-а у целобројном коду.[14] AMD је касније успео да се наметне као озбиљан такмичар са К6 скупом процесора, који су трасирали пут ка веома успешним Athlon и Opteron процесорима. Било је и других такмичара, као што су Centaur Technology (раније IDT), Rise Technology, и Transmeta. VIA Technologies-ов енергетски ефикасан С3 и С7 процесори, који су били дизајнирани од стране Centaur компаније, продати су за много година. Centaur-ов најновији дизајн, VIA Nano, је њихов први процесор са суперскларним и speculative execution (спекулативно извршење је техника оптимизације где рачунарски систем обавља неки задатак који не може бити стварно потребан). Он је, вероватно занимљиво, уведен у отприлике исто време као и Intel-ов први "in-order" процесор још од Р5 Pentium, Intel Atom.

Проширење величине речи[уреди | уреди извор]

Скуп инструкција архитектуре је два пута проширен на већу величину речи. Године 1985, Intel је објавио 80386 (касније познат као i386) који је постепено заменио 16-битне чипове у рачунарима (мада обично не у уграђеним системима) током наредних година; ово проширење програмских модела се првобитно односило на i386 архитектуру (као прва имплементација) али Intel ју је касније назвао IA-32 када уводи своју (измишљену) IA-64 архитектуру. Године 1999—2003, AMD проширује ову 32-битну архитектуру на 64-бита и осноси си се на њу као на x86-64 у раним документацијама и касније као AMD64. Intel ускоро усваја AMD-ове архитектонске додатке под именом IA-32e које је касније преименовао у EM64T и коначно Intel 64. Међу ових пет имена, оригинални x86-64 се вероватно најчешће користи иако Microsoft и Sun Microsystems такође користе термин x86.

Преглед[уреди | уреди извор]

Основне особине архитектуре[уреди | уреди извор]

X86 архитектура је променљиве дужине инструкције, пре свега "CISC" дизајна са акцентом на заосталу компатибилност. Скуп инструкција није типичан CISC, међутим, већ у основи су проширене верзије једностване осмо-битне 8008 и 8080 архитектуре. Адресирање бајта је омогућено и речи се чувају у меморији са little-endian (Little endian је начин записа податка у меморији тако да је на нижој адреси нижи бајт меморијске речи.) редоследих битова. Приступ меморији за не-поравнате (unaligned) адресе је дозвољен за све важеће величине речи. Највећа природна величина за цели број у аритметици и меморијским адресама (или офсету) је 16, 32 или 64 бита у зависности од генерације архитектуре (новији процесори укључују директну подршку и за мање целе бројеве). Вишеструке скаларне вредности могу се извршавати истовремено преко SIMD јединице присутне у каснијим генерацијама, као што је описано у наставку.[15] Непосредно адресирање офсета и непосредни подаци могу се изразити као 8-битна количина за честе појавне случајеве или у контекстима где је опсег -128...127 довољан. Типичне иструкције су стога 2 или 3 бајта дугачке (мада су неке много дуже, а неке су једнобајтне).

Да би се даље уштедео престор кодирања, већина регистара се изражавају у opcodes коришћењем три бита, и највише једног операнда да инструкција може бити меморијска локација (неки "CISC" дизајни, као што је PDP-11, може користити две). Међутим, овај операнд меморије такође може бити одредиште (или комбинација извора и одредишта), док други операнди, извор, могу бити или регистровани или immediate operand (immediate operand је операнд који је директно кодиран као део машинске инструкције). Међу осталим факторима, то доприноси величини кода који конкурише осмо-битној машини и омгућава ефективно коришћење инструкција кеша. Релативно мали број општих регистара (такође наслодник своји 8-битних предака) је направио важан метод регистар-релативног адресирања (корисећи мале непосредне офсете) приступа операнадима, посебно на стеку. Много напора је стога уложено у прављење таквог приступа као што је брз регистарски приступ, односно један циклус проточних инструкција, у већини случајева у којима је приступ подацима могућ на највишем нивоу у кешу.

Покретни зарез и SIMD[уреди | уреди извор]

Приказани покретни зарез процесора са 80-битним интерним регистрима, 8086, је развијен за оригинални 8086. Овај микропроцесор се касније развио у проширени 80387, а каснији процосори су уграђена заостала компатибилна верзија ове функционалности на истом микропроцесору као главном процесору. Поред тога, модерни x86 дизајн такође садржи SIMD-јединицу (види SSE доле) где инструкције могу да раде паралелно на (једној или две) 128-битној речи, од којих свака садржи 2 и 4 броја у покретном зарезу (сваки 64 или 32 битне ширине респективно), или алтернативно, 2, 4, 8 или 16 целобројних бројева (сваки 64, 32, 16 или 8 битова дужине респективно). Широки SIMD регистри значе да постојећи x86 процесор може учитати или ускладиштити до 128 бита меморијских података у једној инструкцији и такође обављати операције над битовима (мада не целобројна аритметика[16]) на количини пуних 128-бита паралелно. Са увођењем Intel-ових "SandyBridge" процесора, x86 процесори почели су да користе 256-бита ширине SIMD регистре, заједно са AVX (Advanced Vector Extensions) скупом инструкција. Knights Corner, архитектура коју користи Intel на својим Xeon Phi ко-процесорима, користе 512-битне ширине SIMD регистре.

Тренутне имплементације Током извршења, актуелни x86 процесори користе неколико додатних корака за декодирање да поделе више инструкција на мање комаде (микрооперације). Они се потом предају контролној јединици која их баферује и распоређује у складу са x86-семантиком, тако да оне могу бити извршене, делимично паралелно, помоћу једног од неколико (више или мање специјализоване) извршних јединица. Ови модерни x86 дизајни су суперскаларни, и такође у стању су да изврше преко реда и спекулативне операције (преко преименовања регистра), што значи да може да изврше више (делимично или потпуно) x86 инструкција истовремено, а не нужно у истом распореду који је добијен у унструкцијском стриму.

Када је уведен, средином 1990. година, овај метод се понакад називао "RISC језгро" или "RISC превођење", делом због маркетиншких разлога, али и због тога што ове микрооперације деле неке особине са одређеним врстама RISC инструкција. Међутим, традиционални микрокод (користи се од 1950. године) такође суштински дели многе исте особине; нови метод углавном се разликује у томе да се превођење на микрооперације сада дешава асинхроно. Не морање синхронизације извршне јединице са корацима декодовања отвара могућности за додатне анализе (баферованог) стрима кода, па самим тим омогућава детекцију операција које се могу обављати паралелно, истовремено хранећи више од једне извршне јединице.

Каснији процесори такође раде супротно када је могуће; они комбинују одређене x86 секвенце (као што је поређење, праћено условним скоком) у више микрооперација које боље одговарају моделу извршења и на тај начин се могу извршити брже или са мање коришћења машинског ресурса.

Још један начин за побољшање перформанси је да се кеширају декодаване микрооперације, тако да процесор може директно приступити декодованим микрооперацијама из посебног кеша, уместо да их поново декодира. Intel је пратио овај приступ са Execution Trace Cache карактеристикама у њиховој NetBurst микроархитектури (за Pentium 4 процесор) и касније у Decoded Stream Buffer-у (за јзгро-брендиране процесоре од Sandy Bridge).[17]

Transmeta је користила потпуно другачији метод у њиховим x86 компатибилним CPU-овима. Они су користили тачно-на-време превођење за конвертовање x86 инструкције на CPU-ов матерњи VLIW скуп инструкција. Transmeta је тврдила да њихов приступ омогућава дизјне веће енергетске ефикасности, пошто се CPU може одрећи компликованих корака за декодовање више традиционалних x86 инструкција.

Сегментација[уреди | уреди извор]

Микрорачунари током касних 1970. година су радили против 16-битнне 64 КВ адресних лимита, пошто је меморија постајала јефтинија. Неки микрорачунари попут PDP-11 су користили сложене шеме банкарске-замене, или, у случају Digital's VAX, када су редизајнирани много скупљи процесори који су могли директно да раде са 32-битним адресама и подацима. Оригинални 8086, се развио из простог 8080 микропроцесора и, пре свега, у циљу веома малих и јефтиних рачунара и других специјализованих уређаја, уместо усвајања једноставних сегмент регистара који повећавају ширину меморијске адресе за само 4 бита. Множењем 64КВ магистрале са 16, 20-битна адреса је могла да адресира укупно један мегабајт (1.048.576 бајтова), што је у то време био доста велики број за мали рачунар. Концепт сегмента регистара није био нов за многе mainframes (mainframe су врло велики рачунари способни да подрже стотине или чек хиљаде корисника) који су користили сегмент регистар да брзо мењају различите задатке. У пракси, на x86 је било (је) доста критика за имплементацију која у великој мери компликује много заједничких програмских задатака и компајлере. Међутим, архитектура убрзо дозвољава линеарно 32-битно адресирање (почевши од 80386 краје 1985. године), али главним актерима (као што је Microsoft) је требало неколико година да конвертују њихове 16-битно базиране системе. 80386 (и 80486) се стога још много година у великој мери користио као брз (али још увек 16-битно заснован) 8086.

Подацима и/или кодовима се могло управљати у "near" 16-битним сегментима у оквиру 1 МВ адресног простора, или је компајлер могао да ради у "far" моду користећи 32-битне сегмент/офсет парове достижући (само) 1МВ. Иако ће се то показати прилично ограничавајућим до средине 1980. година, то је радило за PC тржиште у настајању, а направило га је врло једноставним за превођење софтвера са старих 8008, 8080, 8085 и Z80 на новије процесоре. Током 1985. године, модел 16-битне адресе постао је ефикасан увођењем 32-битних офсет регистара, у 386 дизајну.

У реалном моду, сегментација се постиже шифтовањем сегментних адреса улево за 4 бити и додавањем офсета у реду како би се добила коначна 20-битна дреса. На пример, ако је DS A000h и SI 5677h, DS:SI ће указивати на апсолутну адресу DS × 10h + SI = A5677h. Тако је укупан адресни простор у реалном режиму 220 бајта, или 1МВ, прилично импресивна цифра за 1978. годину. Све меморијске адресе се састоје од сегмента и офсета; свака врста приступа (код, подаци, или стек) има default сегментни регистар који је у вези са њим (за податке уобичајени регистар је DS, за код CS, и за стек SS). За приступ подацима, сегментни регистар може експлицитно да се наведе (коришћењем сегментног override префикса) да користи било који од четири сегмент регистра.

У овој шеми, два различита сегмент/офсет пара могу показивати на једну апсолутну локацију. Тако, ако је DS A111h и SI 4567h, DS:SI ће показивати на исту A5677h адресу као и горе. Ова шема чини је немогућом да користи више од четири сегмента одједном. CS и SS су од виталног значаја за правилно функционисање програма, тако да се само DS и ES могу користити за показивање на сегментима података изван програма (или, тачније, ван тренутног сегментног извршавања програма) или стека.

У заштићеном режиму, сегментни регистар нема дуже садржаје физичке адресе од почетка сегмента, али садржи "selector" који показује на system-level структуру, звану сегментни дескриптор. Сегментни дескриптор садржи физичку адресу од почетка сегмента, дужину сегмента, и дозволе приступа том сегменту. Офсет се проверава због дужине сегмента, са офсетима који се односе на локације изван сегмента узрокујући изузетке. Офсетови који се односи на локације унутар сегмента су у комбинацији са физичком адресом од почетка сегмента да би се добила физичку адресу која одговара том офсету.

Сегментирана природа може да направи тешким програмирање и дизајн компајлера, јер употреба near и far показивача утиче на перформансе.

Режими адресирања[уреди | уреди извор]

Режими адресирања за 16-битни x86 процесор могу се сумирати овом формулом:

Режими адресирања за 32-битну величину адресе на 32-битним и 64-битним x86 процесорима могу се сумирати овом формулом:

Режими адресирања за 64-битни код на 64-битном x86 процесору могу се сумирати овом формулом:

  • displacement - премештање
  • general register - општи регистар

Инструкције релативне адресе у 64-битном коду (RIP + померање, где је RIP инструкција показивача регистра) поједностављују имплементацију позиционо-независног кода (као што се користило у дељеним библиотекама у неким оперативним системима).

Процесор 8086 је имао 64КВ 8-битног ( или алтернативно 32К – речи од 16-бита) У/И простора, као и 64КВ (један сегмент) стека у меморији подржаној од рачунарског хардвера. Само се речи (2 бајта) могу ставити на стек. Стек расте надоле (ка нумеричко нижим адресама), његово дно показће се помоћу SS:SP. Постоје 256 прекида, које могу да се покрену помоћу и хардвер и софтвер. Прекиди могу каскадирати, користећи стек за чување повратне адресе.

X86 регистри[уреди | уреди извор]

16-бита[уреди | уреди извор]

Оригинални Intel 8086 и 8088 имају четрнаест 16-битних регистара. Четири од њих (AX, BX, CX, DX) су регистри опште намене (GPR), иако сваки од њих може имати додатну намену; на пример, само CX може да се користи као бројач за инструкције петље. Свака може бити приступна као два одвојена бајта (тако BX-овом високом бајту може се приступити као BH и ниском бајту као BL). Постоје два показивачка регистра: SP који показује на врх стека и BP (базни показивач) који се користи да покаже на неко друго место у стеку, обично горње локалне променљиве. Два регистра (SI и DI) су за индексирање низа.

Четири регистара сегмента (CS, DS, SS и ES) се користе за формирање меморијске адресе. FLAGS рагистар садржи заставице као carry flag (carry flag је један бит у статусном регистарском систему (застава) који се користи да означе када је аритметика ношења или позајмице генерисана од најзначајнијих АЛУ бит позиција), overflow flag (overflow flag је обично један бит у статусном регистарском систему који се користи да означи када је дошло аритметике преливања у операцији, указујући да потписани дводопунски резултат не може да стане у броју битова који се користе за операцију (ширина АЛУ)) и zero flag (zero flag је један бит застава која је централна карактеристика на већини конвенционалних процесора архитектуре (укључујући к86, АРМ, ПДП-11, 68000 и бројне друге)). Коначно, показивач инструкција (IP) показује на следећу инструкцију која ће бити учитана из меморије и затим извршена. Овом регистру не може се директно приступити (читати или писати) помоћу програма.

У Intel 50286, три посебна регистра држе дескриптор табеле адреса (GDTR, LDTR, IDTR), а четврти регистар задатака (TR).

32-бита[уреди | уреди извор]

Са појавом 32-битног 80386 процесора, 16-битни регистри опште намене, базни регистар, индексни регистар, инструкцијски показивач, и FLAGS регистар, али не и сегментни регистри, су проширени на 32 бита. Ово је представљено префиксом "E" (за проширено) на име регистра у x86 асемблерском језику. Тако, AX регистар одговара најнижим битовима новог 32-битног EAX регистра, SI одговара најнижим 16 битовима ESI, и тако даље. Регистри опште намене, базни регистри и индекс регистри могу се користити као основни у режиму адресирања, и сви ти регистри осим стек показивача могу бити коришћени као индекси у режиму адресирања.

Два нова сегментна регистра (FS и GS) су била додата. Са већим бројем регистара, инструкција и операнада, формат машинског кода је проширен. Да се обезбеди компатибилност уназад, сегменти са извршним кодом се могу означити као они који садрже или 16-битне или 32-битне инструкције. Посебни префикси омогућавају укључивање 32-битних инструкција у 16-битном сегменту или обрнуто.

доступни регистри у x86 скупу инструкцијама.

Процесор 8038 је имао опциони копроцесор у покретном зарезу, 80387; он је имао осам 80-битне ширине регистара: st(0) до st(7).[18] Са 80486 процесорска јединица са покретним зарезом (FPU) је интегрисана на чип.

Са Pentium MMX, осам 64-битних MMX целобројних регистара је додато (MMX0 до MMX7, који деле ниже битове са 80-битном-широком FPU стеку).[19] Са Pentium III, 32-битни Streaming SIMD Extensions (SSE) контролни/статусни регистар (MXCSR) и осам 128-битних SSE регистри са покретним зарезом (XMM0 до XMM7) били су додати.[20]

64-бита[уреди | уреди извор]

Почевши са AMD Opteron процесором, x86 архитектура се проширила са 32-битних регистара на 64-битне регистре, на сличан начин како се то догодило са 16 на 32-битно проширење. Префикс R идентификује 64-битне регистре (RAX, RBX, RCX, RDX, RSI, RDI, RBP, RSP, RFLAGS, RIP), и осам додатних 64-битних регистара опште намене (R8-R15) је такође додато у стварању x86-64. Међутим, ова проширења су употребљива само у 64-битном режиму, који је један од два начина на располагању у дугом моду. Режими адресирања нису се драматично променили од 32-битног режима, осим што је адреса проширена на 64 бита, виртуелне адресе се сада пријављују проширене на 64 бита (како би се онемогућио рижим битова у виртуелним адресама), а други изборни детаљи су драматично смањени. Поред тога, додат је режим адресирања да омогући меморијске референце у односу на RIP (инструкциони показивач или програмски показивач), да олакша имплементацију позиционо-независног кода, који се користи у дељеним библиотекама и неким оперативним системима.

128-бита[уреди | уреди извор]

SIMD региструје XMM0–XMM15.

256-бита[уреди | уреди извор]

SIMD региструје YMM0–YMM15.

512-бита[уреди | уреди извор]

SIMD региструје ZMM0–ZMM31.

Мешовити/специјалне намене[уреди | уреди извор]

x86 процесори (почевши од 80386) такође укључују разне специјалне/мешовите регистре као контролне регистре (CR0 до 4, CR8 за само 64-бита), дибаг (за дибаговање) регистре (DR0 до 3, плус 6 и 7), тест регистре (TR3 до 7; само 80486), дескриптор регистре (GDTR, LDTR, IDTR), регистре задатака (TR), и модел-специфичне регистре (MSR, који се појављује са Pentium[21]).

Сврха[уреди | уреди извор]

Иако су главни регистри (са изузетком инструкцијског показивача) "опште намене" и могу бити коришћени за било шта, они су првобитно били предвиђени да се могу користити за следеће сврхе:

  • AX/EAX/RAX: акумулатор
  • BX/EBX/RBX: базни индекс (користи се са низовима)
  • CX/ECX/RCX: бројач (за коришћење са петљама и стринговима)
  • DX/EDX/RDX: проширена прецизност акумулатора (нпр. комбиновање 32-битних EAX и EDX за 64-битне целобројне операције)
  • SI/ESI/RSI: изворни индекс за стринг операције
  • DI/EDI/RDI: индекс дестинације за стриг операције
  • SP/ESP/RSP: стек показивач за горњу адресу стека
  • BP/EBP/RBP: стек базни показивач за чување адресе тренутног прозора стека
  • IP/EIP/RIP: инструкцијски показивач. Чува програмски бројач, тренутну адресу инструкције

Сегментни регистри:

  • CS: Код
  • DS: Податак
  • SS: Стек
  • ES: Екстра
  • FS
  • GS

Нема посебних предвиђених намена за осталих 8 регистара доступним само у 64-битном режиму.

Неке инструкције се ефикасније компајлирају и извршавају када користе ове регистре за њихову дизајнирану намену. На пример, користећи AL као акумулатор и додавањем тренутне бајт вредности на њега, производи ефикасно сабирање на AL opcode од 04h, док се коришћењем BL-а производи генеричко и дуже додавање на регистар opcode од 80C3h. Други пример је двоструко процизно дељење и множење које ради конкретно са AX и DX регистрима.

Модерни компајлери имају корист од увеђења сиб бајта (scale-index-base byte) који омогућава регистрима да буду равномерно третирани (налик мокрорачунарима). Међутим, коришћење универзалног сиб ба је неоптимално, пошто он производи дуже кодирање које само користи његову селективност када је то потребно. (Главна корист од сиб бајта је да омогућава ортогоналне и моћније режиме адресирања, који омогућавају да се сачувају инструкције и користе регистри за прорачуне адреса, као што је скалирање индекса.) Неке специјалне инструкције губе приоритет у хардверском дизајну и постају спорије од еквивалентних малих код секвенци. Значајан пример је LODSW инструкција.

Структура[уреди | уреди извор]

Регистри опште намене (A, B, C и D)
64 56 48 40 32 24 16 8
R?X
E?X
?X
?H ?L
64-битни режим – само регистри опште намене (R8, R9, R10, R11, R12, R13, R14, R15)
64 56 48 40 32 24 16 8
?
?D
?W
?B
Сегментни регистри (C, D, S, E, F и G)
16 8
?S
Показивачки регистри (S и B)
64 56 48 40 32 24 16 8
R?P
E?P
?P
?PL

Напомена: ?PL регистри су доступни само у 64-битном режиму

Индекс регистри (S и D)
64 56 48 40 32 24 16 8
R?I
E?I
?I
?IL
Инструкцијски показивачи регистри (I)
64 56 48 40 32 24 16 8
RIP
EIP
IP

Режими рада[уреди | уреди извор]

Реални мод[уреди | уреди извор]

Реални режим је радни режим за 8086 и касније x86-компатибилних CPU-ова. Реални режим карактерише се помоћу 20-битног простора сегментне меморијске адресе (што значи да само 1МВ меморије може бити приступан), директним приступом софтвера на BIOS рутину и периферни хардвер, и нема концепт меморијске заштите или мултитаскинга на хардверском нивоу. Сви x86 CPU-ови у 80286 серији и касније почињу у реалном моду при укључењу; 80186 CPU и ранији процесори су имали само један оперативни мод, који је еквивалентан реалном моду у каснијим чиповима.

Да би искористили више од 64КВ меморије, морају бити коришћени сегментни регистри. Ово је створило велике компаликације за имплементацију компајлера, који су увели разне показивачке модове као што су "near", "far" и "huge" да би искористили имплицитну природу сегментиране архитектуре у различитим степенима, са неким показивачима који садрже 16-битни офсет унутар имплицираног сегмента и другим показивачима који садрже сегментне адресе и офсет-ове у оквиру сегмената.

Заштићени режим[уреди | уреди извор]

Додатно, у реалном моду, Intel 80286 подржава заштићени режим, који шири адресибилну фитичку меморију до 16 MB и адресибилну виртуелну меморију до 1GB, и који омогућава заштићену меморију, који спречава програме да кваре један другог. Ово се ради коришћењем сегментних регистара само за складиштење индекса у табелу сегмента. Постојале су такве две табеле, Глобална Дескриптор Табела (GDT) и Локална Дескриптор Табела (LDT), свака садржи до 8192 дескриптора сегмената, сваки сегмент даје приступ за 64КВ меморије. Табела сегмента обезбеђује 24-битну базну адресу, која се може додати на жељени офсет да би се створила апсолутна адреса. Сваком сегменту може бити додељен један од четири нивоа прстена који се користе за хардверску-засновану рачунарску безбедност.

Intel 80386 увео је подршку страничења у заштићеном режиму, механизам који омогућује коришћење остраничене вируелне меморије.

Страничење се користи интензивно помоћу модерних мултитаскинг оперативних система. Linux, 386BSD и Windows NT су развијени за 386 пошто је то била прва Intel-ова архитектура CPU-а која је подржавала 32-битни сегментни офсет. 386 архитектура је постала основна за даљи развој x86 серије.

X86 процесори који подржавају заштићени режим у реалном моду за заосталу компатибилност са старијом 8086 класом процесора. По укључењу (а.к.а покретање), процесор се покреће у реалном режиму, а затим почиње извршавање инструкција. Оперативни системски boot code (boot code су у основи "инструкције" које се покрећу на рачунару када он стартује), који може бити складиштен у ROM-у, може да стави процесор у заштићени режим да омогући станичење и остале функције. Скуп инструкција у заштићеном режиму је заостала компатибилан са оном која се користи у реалном режиму.

Виртуелни 8086 мод[уреди | уреди извор]

Постоји под-режим рада у 32-битном заштићеном режиму, који се зове виртуелни 8086 мод. Ово је у суштини хибрини радни мод који омогућава програме у реалном режиму и оперативним системима да раде док су под заштићеним режимом надзора оперативног система. Ово омогућава велику флексибилност у извршавању програма у заштићеном режиму и програма у реалном режиму, истовремено. Овај режим је доступан само у 32-битној верзији заштићеног режима; виртуелни 8086 мод не постоји у 16-битној верзији заштићеног режима, или у дугом моду.

Дуги мод[уреди | уреди извор]

До 2002. године, било је очигледно да 32-битно адресни простор x86 архитектуре ограничава своје перформансе у апликацијама које захтевају велике скупове података. 32-битни адресни простор би омогућио процесору да директно адресира само 4GB података, величина који превазилази апликације као што су видео процесовање и database engines. Коришћењем 64-битних адреса, један може да директно адресира 16 EB (16 милијарди GB) података, иако већина 64-битних архитектура не подржава потпуни приступ 64-битном адресном простору (AMD64, на пример, подржава само 48 бита, подељених у 4 нивоа адресирања, од 64-битнох адреса).

AMD је развио 64-битни проширење 32-битне x86 архитектуре која се тренутно користи у x86 процесорима, која се у почетку називала x86-64, а касније је преименована у AMD64. Opteron, Athlon 64, Turion 64, и касније Sempron породице процесора користе ову архитектуру. Успех AMD64 линије процесора у комбинацији са млаким пријемом IA-64 архитектуре приморао је Intel да објави своју имплементацију AMD64 скупа инструкција. Intel је претходно имплементирао подршку за AMD64,[22] али је одлучио да га не омогући у нади да AMD неће донети AMD64 на тржиште пре Itanium-овог новог IA-64 скупа инструкција широко усвојеног. Intel је брендирао своју импелентацију AMD64 као EM64T, а касније га је поново брендирао као Intel 64.

У својој литератури и производним верзијама имена, Microsoft и Sun се односе према AMD64/Intel 64 колективно као х64 у Windows и Solaris оперативним системима респективно. Linux дистрибуције се односе према њему или као "x86-64", његова варијанта "x86_64", или "amd64". BSD системи користе "amd64" док Mac OS X користи "x86_64".

Дуги мод је углавном проширење 32-битног скупа инструкција, али за разлику од 16-ка-32-битној транзицији, многе инструкције су пале у 64-битном моду. Ово у ствари не утиче на заосталу бинарну компатибилност (која ће извршити старији код у другом моду који задржавају подршку за те инструкције), али мења начин на који асемблер и компајлер морају да раде за нови код.

Ово је био први пут да је покренута главна екстензија x86 архитектуре и да је потицала од стране других произвођача, а да то није био Intel. Такође је био први пут да је Intel прихватио технологију ове природе из спољашњех извора.

Екстензије[уреди | уреди извор]

Јединица за покретни зарез[уреди | уреди извор]

Рани x86 прецесори могли су бити проширени са хардвером за покретни зарез у облику серије нумеричких ко-процесора са покретним зарезом, са именима као 8087, 80287 о 80387, скраћено x87. Ово је такође познато као NPX (Numeric Processor eXtension). Са врло мало изузетака, 80486 и наредни x86 процесори су затим интегрисали ову х87 функционалност начип, који је донео х87 инструкције de facto саставни део x86 скупа инструкција.

Сваки х87 регистар, познат као ST(0) до ST(7), је 80 бита широк и складишти бројеве у IEEE стандарду покретног-зареза - формат са двоструко проширеном прецизношћу. Ови регистри су организовани као стек са ST(0) на врху. То је учињено како би се сачувао opcode простор, а регистри су стога били случајно доступни само за било који операнд у регистар-регистар аритметичким операцијама; ST0 мора увек да буде један од два операнада, или извор или одредиште, без обзира да ле је други операнд ST(x) или меморијски операнд.

MMX[уреди | уреди извор]

MMX је SIMD скуп инструкција дизајниран од стране Intel-а, и представљен 1997. године за Pentium MMX процесор. MMX скуп инструкција је развијен за сличан концепт, који је прво коришћен у Intel i860. Он је подржавао већину каснијих IA-32 процесора од Intel-а и других произвођача. MMX се обично ористи за видео обраду (на пример мултимедијалне апликације).

MMX је додао 8 нових регистара на архитектуру, познатих као ММ0 до ММ7 (у даљем тексту ММn). У стварности, ови нови регистри су само друго име за постојеће x87 FPU стек регистре. Отуда, сво што се ради стеку за покретни зарез ће такође утицати на MMX регистре. За разлику од FP стека, ови MMn регистри су фиксирани, не релативни, и зато су били насумично доступни. Скуп инструкција није усвојио стек-налик семантику, тако да су постојећи оперативни системи и даље могли да правилно чувају и враћају регистарско стање као је мултитаскинг без модификација.

Сваки MMn регситар су 64-битни цели бројеви. Међутим, један од главних концепата MMX скупа инструкција је концепт упакованих типова података, што значи да уместо коришћења целог регистра за један 64-битни цео број (четворострука реч), један може да садржи два 32-битна целобројна броја (двострука реч), четири 16-битна целобројна броја (реч) или осам 8-битних целобројних бројева (бајт). Имајући то у виду MMX-ови 64-битни MMn регистри су друго име за FPU стек и сваки од регистара са покретним зарозом су 80 бита ширине, горњи 16 бита регистри са покретним зарезом су неискоришћени у MMX-у. Ови битови су постављени на један од било које MMX инструкције, која одговара приказу покретног зареза NaN-сова (not a number – није број) или бесконачности.

3DNow![уреди | уреди извор]

Године 1997. AMD је представио 3DNow!. Увођење ове технологије поклопило се са успоном 3D апликација за забаву и била је дизајнирана да побољша CPU-ове прерформансе за обреду вектора графичко-захтевних апликација. 3D програмери видео игара и 3D произвођачи графичког хардвера користили су 3DNow! да побољшају своје перформансе на AMD-овом K6 и Athlon серији процесора.

3DNow! је био дизајниран да буде природна еволуција MMX са целобројних бројева до покретног зареза. Као такав, он користи потпуно исту регистар конвенцију за именовање као MMX, тј. MM0 до ММ7. Једина резлика је та да уместо паковања целих бројева у ове регистре, два једно прецизна броја са покретним зарезом се пакују у сваком регистру. Предност другачије именованог FPU регистара је та да се исте инструкције и структуре података користе за чување стања FPU регистара, се такође могу користити за чување стања 3DNow! регистра. Тако нису потребне да се направе посебне модификације на оперативним системима који иначе не знају ништа о њима.

SSE[уреди | уреди извор]

Године 1999, Intel је представио Streaming SIMD Extensions (SSE) скуп инструкција, из чега следи у 2000. години SSE2. Први додатак је дозвољавао растерећење базичних операција у покретном зарезу од x86 стека и други је направио MMX скоро застарелим и омогућила инструкцијама да буду реална мета од стране конвенционалних компајлера. Представљен у 2004. години са Prescott ревизијом Pentium 4 процесора, SSE3 је додао специфичну меморију и нитно-руквање инструкцијама да би повећао перформансе Intel-ове HyperThreading технологије. AMD је лиценцирао SSE3 скуп инструкција и имплементирао већину SSE3 инструкција за њихову Е ревизију и касније Athlon 64 процесоре. Athlon 64 није подржавао HyperThreading и недостатке тих SSE3 инструкција које су коришћене само за HyperThreading.

SSE одбацио је сво наслеђе са FPU стеком. Ово такође значи да је овај скуп инструкција одбацио све наслеђене везе са претходном генерацијом SIMD скупа инструкција, као што је MMX. Али то је ослободило дизајнере, омогућило им је да користе веће регистре, без ограничења величине од FPU регистара. Дизајнери су створили осам 128-битних регистара, именованих XMM0 до XMM7. (Напомена: у AMD64 број SSE XMM регистара је повећан са 8 на 16.) Међутим, мана је да су оперативни системи морали да имају свест о овом новом скупу инструкција, како би могли да сачувају своје стања регистра. Тако је Intel створио нешто измењену верзију Заштићеног режима, названу Enhanced мод који омогућава коришћење SSE инструкција, док оне остају онеспособљене у регуларном Заштином моду. OS који се свестан SSE-а ће активирати Enhanced мод, док ће несвесни OS ући само у традиционални Заштитини режим.

SSE је SIMD скуп инструкција који ради само са вредностима у покретном зарезу, као 3DNow! Међутим, за разлику од 3DNow! он прекида све старије конеквије са FPU стеком. Пошто има веће регистре него 3DNow!, SSE може спаковати дупло више од једно прецизно децимале у његовом регистру. Осигинални SSE био је ограничен само на јено-прецизне брејеве, као што је 3DNow! SSE2 увео је могућност да спакује дупло прецизне бројеве, које 3DNow! није имао могућност да ради, пошто су дупло прецизни бројеви 64-битне величине, што би био цео један 3DNow! MMn регистар. На 128 бита, SSE XMMn регистар би могао да спакује два дупло прецизна децимална броја у један регистар, Тако SSE2 је погоднији за научне прорачуне него SSE1 или 3DNow!, који су били ограничени на само једну прецизност. SSE3 није увео никакве додатне регистре.

Преширење физичке адресе (PAE)[уреди | уреди извор]

Проширење физичке адресе или PAE било је први пут додато у Intel Pentium Pro, да омогући додатних 4 бита физичког адресирања у 32-битном заштићеном режиму. Величина меморије у Зашзићеном режиму је обично ограничена на 4 GB. Путем трикова у процесорским странама и системима за управљање сегментима меморије, x86 оперативни систем могао је да приступи више од 32-битног адресног простора, чак и без преласна на 65-битну парадигму. Овај мод не мења дужину сегмента офсета или линеарне адресе; они су још увек само 32 битни.

X86[уреди | уреди извор]

У априлу 2003. године, AMD је објавио први x86 процесор са 64-битним физичким меморијским адресама регистара способним да адресирају мноого више од 4GB меморије које користе нова x86-64 проширења (такође познат као х64). Intel је представио њихов први x86-64 процесор у јулу 2004. године.

X86-64 је претходио другој архитектури која користи 64-битно меморијско адресирање: Intel је представио Itanium 2001. године за рачунарско тржиште високох перформанси. Међутим, Itanium је био некомпатибилан са x86 и данас се не користи у широкој употреби. X86-64 такође је представио NX бит, који нуди неку заштиту од безбедносних грешака изазваних прекорачењем бафера.

Виртуелизација[уреди | уреди извор]

Пре 2005. године x86 архитектура процесора није била у стању да испуни Popek и Goldberg захтеве – спецификација за виртуализацију настала је 1974. године од Gerald J. Popek и Robert P. Goldberg. Међутим оба, комерцијална и отворени извор x86 витуализације хипервизорских производа били су развијени коришћењем софтверско-базираних виртуализација. Комерцијални системи укључују VMware ESX, VMware Workstation, Parallels, Microsoft Hyper-V Server, и Microsoft Virtual PC; док системи отвореног извора укључују QEMU/KQEMU, VirtualBox, и Xen.

Увођење AMD-V и Intel VT-x скупа инструкција у 2005 години, омогућава x86 процесорима да задовоље Popek and Goldberg виртуализационе захтеве.[23]

Види још[уреди | уреди извор]

Референце[уреди | уреди извор]

  1. ^ Unlike the 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). However, the term x86 was already established among technicians, compiler writers etc.
  3. ^ the GRID Compass laptop, for instance
  4. ^ See [1], for instance
  5. ^ Intel currently uses IA-32 and Intel 64 (formerly EM64T or IA-32e) for x86 and x86-64 respectively. Intel have used various names to market the successive generations of the architecture over the years: the name "iAPX 86" was originally used for the 8086 product family, and likewise the 80286 was the "iAPX 286". Intel originally referred to the 80386 simply by that number (ca. 1986) before switching to the name "386 DX" (1990) and then "Intel386 DX" (1991). The 80386 or x86-32 is sometimes denoted as i386, often by GNU-Linux distributions. Likewise, AMD today prefers AMD64 over the x86-64 name it once introduced.
  6. ^ „Linux* Kernel Compiling”. Intel. Архивирано из оригинала 6. 6. 2007. г. Приступљено 4. 9. 2007. 
  7. ^ „Intel Web page search result for "x64". Архивирано из оригинала 24. 10. 2007. г. Приступљено 4. 9. 2007. 
  8. ^ „Birth of a Standard: The Intel 8086 Microprocessor”. Архивирано из оригинала 26. 09. 2010. г. Приступљено 31. 03. 2012. 
  9. ^ The embedded processor market is populated by more than 25 different architectures, which, due to the price sensitivity, low power and hardware simplicity requirements, outnumber the x86.
  10. ^ „"Time and again, processor architects have looked at the inelegant x86 architecture and declared it cannot be stretched to accommodate the latest innovations," said Nathan Brookwood, principal analyst, Insight 64.”. Архивирано из оригинала 7. 3. 2012. г. Приступљено 22. 12. 2013. 
  11. ^ Microsoft to End Intel Itanium Support[мртва веза]
  12. ^ „Microprocessor Hall of Fame”. Intel. Архивирано из оригинала 6. 7. 2007. г. Приступљено 11. 8. 2007. 
  13. ^ The NEC V20 and V30 also provided the older 8080 instruction set, allowing PCs equipped with these microprocessors to operate CP/M applications at full speed (i.e. without the need to simulate a 8080 by software).
  14. ^ It had a slower FPU however, which is slightly ironic as Cyrix started out as a designer of fast Floating point units for x86 processors.
  15. ^ 16-bit and 32-bit microprocessors were introduced during 1978 and 1985 respectively; plans for 64-bit was announced during 1999 and gradually introduced from 2003 and onwards.
  16. ^ That is because integer arithmetic generates carry between subsequent bits (unlike simple bitwise operations).
  17. ^ „DSB Switches”. Intel VTune Amplifier 2013. Intel. Архивирано из оригинала 02. 12. 2013. г. Приступљено 26. 8. 2013. 
  18. ^ Intel 64 and IA-32 Architectures Software Developer’s Manual Volume 1: Basic Architecture (PDF). Intel. март 2013. Chapter 8. 
  19. ^ Intel 64 and IA-32 Architectures Software Developer’s Manual Volume 1: Basic Architecture (PDF). Intel. март 2013. Chapter 9. 
  20. ^ Intel 64 and IA-32 Architectures Software Developer’s Manual Volume 1: Basic Architecture (PDF). Intel. март 2013. Chapter 10. 
  21. ^ Two MSRs of particular interest are SYSENTER_EIP_MSR and SYSENTER_ESP_MSR, introduced on the Pentium® II processor, which store the address of the kernel mode system service handler and corresponding kernel stack pointer. Initialized during system startup, SYSENTER_EIP_MSR and SYSENTER_ESP_MSR are used by the SYSENTER (Intel) or SYSCALL (AMD) instructions to achieve Fast System Calls, about three times faster than the software interrupt method used previously.
  22. ^ „Intel's Yamhill Technology: x86-64 compatible | Geek.com[[Категорија:Ботовски наслови]]”. Архивирано из оригинала 05. 09. 2012. г. Приступљено 23. 12. 2013.  Сукоб URL—викивеза (помоћ)
  23. ^ Adams, Keith; Agesen, Ole (20. 21. 200606). „A Comparison of Software and Hardware Techniques for x86 Virtualization” (PDF). Proceedings of the International Conference on Architectural Support for Programming Languages and Operating Systems, San Jose, CA, USA, 2006. ACM 1-59593-451-0/06/0010. Приступљено 22. 12. 2006.  Проверите вредност парамет(а)ра за датум: |date= (помоћ)

Литература[уреди | уреди извор]

Спољашње везе[уреди | уреди извор]