X86 — разлика између измена

Садржај обрисан Садржај додат
м Разне исправке
м ciscenje
Ред 2:
 
[[Датотека:KL Intel D8086.jpg|thumb|Intel 8086.]]
[[Датотека:Core 2 Duo E6300.jpg|thumb|Intel Core 2 Duo - пример једне х86x86-компатибиланости, 64-битним вишејезгарни процесора.]]
[[Датотека:Slot-A Athlon.jpg|thumb|AMD Athlon (старија верзија) - другачија технологија, али задовољава, x86 имплементацију.]]
 
Термин х86x86 означава породицу компатибилног [[Скуп инструкција|скупа инструкција]] архитектуре<ref>Unlike the [[microarchitecture]] (and specific electronic and physical implementation) used for a specific microprocessor design.</ref> заснованих на [[Интел 8086|Intel 8086]] [[Процесор|CPU]]. 8086 је уведен 1978. године, као потпуно 16-битни наставак Intel-ове 8-битне серије засноване на [[Интел 8080|8080]] микропроцесору, са моморијском сегментацијом као решењем за адресирање више моморије него што би било могуће покрити обичним 16-битним адресама. Термин х86x86 је изведен из чињенице да су ранији наследници 8080, такође имали имена са завршетком "86".
 
Многа додавања и проширења су била додата на х86x86 скуп инструкција током година, већином доследно са пуном компатибилношћу претходних процесора.<ref>Intel abandoned its "x86" naming scheme with the ''[[P5 (microarchitecture)|P5]] [[Pentium (brand)|Pentium]]'' during 1993 (as ''numbers'' could not be trademarked). However, the term x86 was already established among technicians, compiler writers etc.</ref> Архитектура је имплементирана у процесор од [[Интел|Intel]]-а, [[Cyrix]]-а, [[AMD]]-а, [[VIA]] и многих других компанија.
 
Термин није синоним са IBM PC компатибилношћу јер то подразумева мноштво другог рачунарског хардвера; [[Уграђени систем|уграђени системи]] као и рачунари опште намене користили су х86x86 чипове пре него што је стартовало PC-компатибилно тржиште,<ref>the [[GRID Compass]] laptop, for instance</ref> неки од њих пре самог [[IBM PC]]-а.
 
== Преглед ==
У 1980. и раним 1990. годинама када су [[Интел 8088|8088]] и 80286 и даље били у општој употреби, термин х86x86 обично је представљао било који 8086 компатибилни CPU. Данас, међутим, х86x86 обично подразумева бинарну компатибилност такође са 32-битним [[Скуп инструкција|скупом инструкција]] од 80386. То је због чињенице да је овај скуп инструкција постао нешто као најмањи заједнички именилац за многе оперативне системе, а вероватно и због тога што је постао уобичајени термин након увођења 86386 у 1985. години.
 
Термин х86x86 понекад може се истаћи као [[х86x86-32]] <ref>See [http://www.oracle-base.com/articles/misc/Solaris10X86-32Installation.php], for instance</ref> да би се разликовао од или оригиналног 16-битног "[[x86-16]]" или од 64-битног x86-64.<ref>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.</ref> Иако се већина х86x86 процесора, који се користе у новим [[Лични рачунар|персоналним рачунарима]] и [[Сервер|серверима]], има 64-битну компатибилност, да би се избегли проблеми са компатибилношћу са старијим рачунарима или системима, термин x86-64 (или x64) се често користи да означи 64-битни софтвер, са термином х86x86 који тренутно имплицира само 32-бита.<ref>{{cite web |title=Linux* Kernel Compiling |url=http://www.intel.com/cd/ids/developer/asmo-na/eng/182333.htm?page=4 |publisher=Intel |accessdate = 4. 9. 2007. |archiveurl = http://web.archive.org/web/20070606034724/http://www.intel.com/cd/ids/developer/asmo-na/eng/182333.htm?page=4 <!-- Bot retrieved archive --> |archivedate = 6. 6. 2007.}}</ref><ref>{{cite web |title=Intel Web page search result for "x64" |url=http://mysearch.intel.com/corporate/default.aspx?culture=en-US&q=x64&searchsubmit.x=21&searchsubmit.y=11 |accessdate = 4. 9. 2007.}}</ref>
 
Иако је 8086 првенствено развијен за [[Уграђени систем|уграђене системе]] и мале једно-корисничке рачунаре, у великој мери као одговор на успешну 8080-компатибилност [[Zilog Z80]],<ref>[http://www.pcworld.com/article/146957/birth_of_a_standard_the_intel_8086_microprocessor.html Birth of a Standard: The Intel 8086 Microprocessor]</ref> линији х86x86 убрзо су порасле карактеристике и процесорска снага. Данас, х86x86 је свеприсутан у стационарним и преносивим персоналним рачунарима и заменио је опсег средњих рачунара и [[Рачунар са смањеним скупом инструкција|рачунара са смањеним скупом инструкција]] ([[Рачунар са смањеним скупом инструкција|RISC]]) заснованих рачунара већином од сервера и [[Радна станица|радних станица]]. Велика количина [[Софтвер|софтвера]], који укључују [[Оперативни систем|оперативне системе]] (OS) као што су [[MS-DOS|DOS]], [[Мајкрософт виндоус|Windows]], [[Линукс|Linux]], [[BSD]], [[Соларис (оперативни систем)|Solaris]] и [[OS X|Mac OS X]] функционишу са х86x86 заснованим хардвером.
 
Модеран х86x86 је релативно редак у [[Уграђени систем|уграђеним системима]], међутим, и мале апликације са ниском потрошњом енергије (које користе мале батерије) као и јефтино миксопроцесорско тржиште, као што су [[кућни апарати]] и играчке, немају никакво значајно х86x86 присуство.<ref>The embedded processor market is populated by more than 25 different [[instruction set|architectures]], which, due to the price sensitivity, low power and hardware simplicity requirements, outnumber the x86.</ref> Једноставна 8-битна и 16-битна архитектура су заједничке овде, иако х86x86-компатибилан [[VIA C7]], [[VIA Nano]], [[AMD]] Geode, [[Athlon Neo]] и [[Intel Atom]] су примери 32- и 64-битног дизајна који се користе са релативно малом снагом и јефтиним сегментима.
 
Било је неколико покушаја, укључујући и сам Intel, да прекине тржишну доминацију "нелегалне" х86x86 архитектуре дизајниране директно од првих једноставних 8-битних микропроцесора. Примери за то су iAPX 432 (друго име Intel 8800), Intel 960, Intel 860 и Intel/Hewlett-Packard Itanium архитектура. Међутим, континуирано пречишћавање х86x86 микроахитектуре, кола и производње полупроводника направили су потешкоће у замени х86x86 у многим сегментима. AMD-ово 64-битно проширење х86x86 (којим је Intel коначно одговорио да је са компатибилним дизајном)<ref>[http://bwrc.eecs.berkeley.edu/CIC/announce/1999/k8.annc.html "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.]</ref> и скалабилност х86x86 чипова као што су [[Вишејезгарни процесор|осмојезгарни]] Intel Xeon и 12-језгарни AMD Opteron су подвукли х86x86 као пример како континуирано пречишћавање утврђених индустријских стандарда може одолети конкуренцији од потпуно нових архитектура.<ref>[http://www.eweek.com/c/a/IT-Infrastructure/Microsoft-to-End-Intel-Itanium-Support-370349/ Microsoft to End Intel Itanium Support]</ref>
 
== Хронологија ==
У доњој табели су наведени брендови заједничких<ref>{{cite web |title=Microprocessor Hall of Fame |url=http://www.intel.com/museum/online/hist%5Fmicro/hof/ |publisher=Intel |accessdate = 11. 8. 2007. |archiveurl = http://web.archive.org/web/20070706032836/http://www.intel.com/museum/online/hist_micro/hof/ <!-- Bot retrieved archive --> |archivedate = 6. 7. 2007.}}</ref> потрошачких циљаних процесора који имплементрају х86x86 [[скуп инструкција]], који су груписани по генерацијама које наглашавају важне догађаје х86x86 историје. Напомена: CPU генерације нису строге – сваку генерацију одликује значајно побољшање или комерцијални успех дизајна процесорске микроархитектуре.
 
{| class="wikitable"
Ред 33:
! Значајне (нове) функције
|-
| rowspan="2" | 1 || 1978 || [[Интел 8086|Intel 8086]], [[Интел 8088|Intel 8088]] и колонови || rowspan="2" | '''16-бита''' / 20-бита (сегментирана) || Први х86x86 микропроцесор
|-
| rowspan="2" | 1982 || [[Интел 80186|Intel 80186]], [[Интел 80188|Intel 80188]] и колонови, [[NEC V20]]/V30 || Хардвер за брзо израчунавање адреса, брзо множење/дељење, итд.
Ред 55:
| 2003 || [[Pentium M]], [[Intel Core]] (2006) || оптимизован за мале снаге.
|-
| rowspan="2" | 7 || 1999 || [[Athlon]], [[Athlon XP]] || Супер скаларни FPU, широки дизајн (до три х86x86 инструкције/генераторском такту
|-
| 2000 || [[Pentium 4]] || Дубока проточна обрада, висока фреквенца, SSE2, hyper-threading.
|-
| rowspan="4" | 7/8 || 2000 || [[Transmeta Crusoe]], [[Transmeta Efficeon]] || [[Јако дуга реч инструкције|VLIW]] дизајн са х86x86 [[Емулатор|емулатором]], меморијски контролер на чипу.
|-
| 2004 || Pentium 4 Prescott ||rowspan="4"|'''64-бита'''/64-бита физички у првој AMD имплементацији || Веома дубока проточна обрада, веома висока фреквенца, [[SSE3]], 64-битно способан (целобројни CPU) је само доступан у LGA 755 подножју.
Ред 90:
 
=== Позадина ===
Х86X86 архитектура је први пут коришћена у [[Интел 8086|Intel 8086]] [[Процесор|централној процесорској јединици]] (CPU) објављена током 1978. године, потпуно 16-битни дизајн био је заснован на раним 8-битном [[Интел 8008|8008]] и [[Интел 8080|8080]]. Иако бинарно некомпатибилан, био је дизајниран да омогући програме [[Асемблер|асемблерског језика]] писане за ове процесоре (као и савремени [[Интел 8085|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 ====
Ред 99:
 
У различата времена, компаније као што су [[IBM]], NEC,<ref>''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).
''</ref> [[AMD]], [[Тексас инструментс|TI]], [[STM]], [[Фуџицу|Fujitsu]], [[OKI]], [[Сименс (компанија)|Siemens]], [[Cyrix]], [[Intersil]], [[C&T]], [[Нексген|NexGen]], [[UMC]], и [[DM&P]] почеле су да дизајнирају и/или производе х86x86 [[Процесор|процесоре]] (CPU) намењене персоналним рачинарима као и уграђеним системима. Такве х86x86 имплементације су ретко једноставне копије, али често користе различите унутрашње микроархитектуре као и различита решења у електронским и физичким нивоима. Савим природно, рани компатибилни микропроцесори су 16-битни, док су 32-битни развијени много касније. За тржиште [[Лични рачунар|персоналних рачунара]], реалне количине су почеле да се појављују око 1990. године са i386 и i486 компатибилним процесорима, често под називом слично Intel-овим оригиналним чиповима. Друге компаније, које дизајнирају или производе х86x86 или х87 процесоре, укључују ITT Corporation, National Semiconductor, ULSI System Technology, и Weitek.
 
Након што је следила потпуно проточна обрада i486, [[Интел|Intel]] је представио бренд име Pentium (који, за разлику од бројних других, могао бити заштићен) за свој нови скуп суперскаларног х86x86 дизајна. Са х86x86 именованом шемом сада легално очишћеном, [[IBM]] се удружио са Cyrix да произведе 5x86, а затим врло ефикасан 6x86 (M1) и 6x86MX (MII) линије Cyrix дизајна, који су били први х86x86 микропроцесори који имплементирају регистарско преименовање да омогуће спекулативно извршење. AMD је у међувремену дизајнирао и произвео напредни али закаснели 5k86 (K5), који је, интерно, био уско базиран на AMD-ов рани 29K [[Рачунар са смањеним скупом инструкција|RISC]] дизајн; слично као [[Нексген|NexGen]]'s Nx586, он користи стратегију тако да прикаже стање проточне обраде декодираних х86x86 инструкција у уједначеним и лако рукујућим микро-операцијама, метод који је остао основа за већину х86x86 дизајна до данашњег дана.
 
Неке ране верзије ових микропроцесора су имале проблем одвођења топлоте. 6x86 је такође погођен са неколико мањих компатибилних проблема, [[Нексген|Nx586]] је имао недостатак покретног зареза (FPU) и (тадашње кључне) пин-компатибилности, док је К5 имао нешто разочаравајући учинак када је (коначно) уведен. Корисничко незнање о алтернативи за Pentium серију додатно је допринело да ти дизајни буду неуспешни, упркос чињеници да је К5 имао веома добру Pentium компатибилност и 6x86 је био знатно бржи од Pentium-а у целобројном коду.<ref>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.</ref> [[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]] такође користе термин х86x86.
 
== Преглед ==
 
=== Основне особине архитектуре ===
Х86X86 архитектура је променљиве дужине инструкције, пре свега "[[Рачунар са сложеним скупом инструкција|CISC]]" дизајна са акцентом на заосталу компатибилност. Скуп инструкција није типичан CISC, међутим, већ у основи су проширене верзије једностване осмо-битне [[intel 8008|8008]] и [[Интел 8008|8080]] архитектуре. Адресирање бајта је омогућено и речи се чувају у меморији са [[Big endian|little-endian]] (Little endian је начин записа податка у меморији тако да је на нижој адреси нижи бајт меморијске речи.) редоследих битова. Приступ меморији за не-поравнате (unaligned) адресе је дозвољен за све важеће величине речи. Највећа природна величина за цели број у аритметици и меморијским адресама (или офсету) је 16, 32 или 64 бита у зависности од генерације архитектуре (новији процесори укључују директну подршку и за мање целе бројеве). Вишеструке скаларне вредности могу се извршавати истовремено преко SIMD јединице присутне у каснијим генерацијама, као што је описано у наставку.<ref>''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.''</ref> Непосредно адресирање офсета и непосредни подаци могу се изразити као 8-битна количина за честе појавне случајеве или у контекстима где је опсег -128...127 довољан. Типичне иструкције су стога 2 или 3 бајта дугачке (мада су неке много дуже, а неке су једнобајтне).
 
Да би се даље уштедео престор кодирања, већина регистара се изражавају у opcodes коришћењем три бита, и највише једног операнда да инструкција може бити меморијска локација (неки "CISC" дизајни, као што је PDP-11, може користити две). Међутим, овај операнд меморије такође може бити одредиште (или комбинација извора и одредишта), док други операнди, извор, могу бити или регистровани или immediate operand (immediate operand је операнд који је директно кодиран као део машинске инструкције). Међу осталим факторима, то доприноси величини кода који конкурише осмо-битној машини и омгућава ефективно коришћење инструкција кеша. Релативно мали број општих регистара (такође наслодник своји 8-битних предака) је направио важан метод регистар-релативног адресирања (корисећи мале непосредне офсете) приступа операнадима, посебно на стеку. Много напора је стога уложено у прављење таквог приступа као што је брз регистарски приступ, односно један циклус проточних инструкција, у већини случајева у којима је приступ подацима могућ на највишем нивоу у кешу.
 
==== Покретни зарез и SIMD ====
Приказани покретни зарез процесора са 80-битним интерним регистрима, [[Интел 8086|8086]], је развијен за оригинални 8086. Овај микропроцесор се касније развио у проширени 80387, а каснији процосори су уграђена заостала компатибилна верзија ове функционалности на истом микропроцесору као главном процесору. Поред тога, модерни х86x86 дизајн такође садржи SIMD-јединицу (види SSE доле) где инструкције могу да раде паралелно на (једној или две) 128-битној речи, од којих свака садржи 2 и 4 броја у покретном зарезу (сваки 64 или 32 битне ширине респективно), или алтернативно, 2, 4, 8 или 16 целобројних бројева (сваки 64, 32, 16 или 8 битова дужине респективно). Широки SIMD регистри значе да постојећи х86x86 процесор може учитати или ускладиштити до 128 бита меморијских података у једној инструкцији и такође обављати операције над битовима (мада не целобројна аритметика<ref>''That is because integer arithmetic generates carry between subsequent bits (unlike simple bitwise operations).''</ref>) на количини пуних 128-бита паралелно. Са увођењем Intel-ових "SandyBridge" процесора, х86x86 процесори почели су да користе 256-бита ширине SIMD регистре, заједно са AVX (Advanced Vector Extensions) скупом инструкција. Knights Corner, архитектура коју користи Intel на својим Xeon Phi ко-процесорима, користе 512-битне ширине SIMD регистре.
 
Тренутне имплементације
Током извршења, актуелни х86x86 процесори користе неколико додатних корака за декодирање да поделе више инструкција на мање комаде (микро-операције). Они се потом предају [[Управљачка јединица|контролној јединици]] која их баферује и распоређује у складу са х86x86-семантиком, тако да оне могу бити извршене, делимично паралелно, помоћу једног од неколико (више или мање специјализоване) извршних јединица. Ови модерни х86x86 дизајни су суперскаларни, и такође у стању су да изврше преко реда и спекулативне операције (преко преименовања регистра), што значи да може да изврше више (делимично или потпуно) х86x86 инструкција истовремено, а не нужно у истом распореду који је добијен у унструкцијском стриму.
 
Када је уведен, средином 1990. година, овај метод се понакад називао "RISC језгро" или "RISC превођење", делом због маркетиншких разлога, али и због тога што ове микро-операције деле неке особине са одређеним врстама RISC инструкција. Међутим, традиционални микрокод (користи се од 1950. године) такође суштински дели многе исте особине; нови метод углавном се разликује у томе да се превођење на микро-операције сада дешава асинхроно. Не морање синхронизације извршне јединице са корацима декодовања отвара могућности за додатне анализе (баферованог) стрима кода, па самим тим омогућава детекцију операција које се могу обављати паралелно, истовремено хранећи више од једне извршне јединице.
 
Каснији процесори такође раде супротно када је могуће; они комбинују одређене х86x86 секвенце (као што је поређење, праћено условним скоком) у више микро-операција које боље одговарају моделу извршења и на тај начин се могу извршити брже или са мање коришћења машинског ресурса.
 
Још један начин за побољшање перформанси је да се кеширају декодаване микро-операције, тако да процесор може директно приступити декодованим микро-операцијама из посебног кеша, уместо да их поново декодира. Intel је пратио овај приступ са Execution Trace Cache карактеристикама у њиховој NetBurst микроархитектури (за Pentium 4 процесор) и касније у Decoded Stream Buffer-у (за јзгро-брендиране процесоре од Sandy Bridge).<ref>{{cite web|url=http://software.intel.com/sites/products/documentation/doclib/iss/2013/amplifier/lin/ug_docs/GUID-143D1B76-D97F-454F-9B4B-91F2D791B66D.htm|title=DSB Switches|work=Intel VTune Amplifier 2013|publisher=Intel|accessdate = 26. 8. 2013.}}</ref>
 
[[Трансмета|Transmeta]] је користила потпуно другачији метод у њиховим х86x86 компатибилним CPU-овима. Они су користили тачно-на-време превођење за конвертовање х86x86 инструкције на CPU-ов матерњи [[Јако дуга реч инструкције|VLIW]] скуп инструкција. Transmeta је тврдила да њихов приступ омогућава дизјне веће енергетске ефикасности, пошто се CPU може одрећи компликованих корака за декодовање више традиционалних х86x86 инструкција.
 
== Сегментација ==
Микрорачунари током касних 1970. година су радили против 16-битнне 64 [[Килобајт|КВ]] адресних лимита, пошто је меморија постајала јефтинија. Неки микрорачунари попут PDP-11 су користили сложене шеме банкарске-замене, или, у случају Digital's VAX, када су редизајнирани много скупљи процесори који су могли директно да раде са 32-битним адресама и подацима. Оригинални 8086, се развио из простог [[Интел 8080|8080]] микропроцесора и, пре свега, у циљу веома малих и јефтиних рачунара и других специјализованих уређаја, уместо усвајања једноставних сегмент регистара који повећавају ширину меморијске адресе за само 4 бита. Множењем 64КВ магистрале са 16, 20-битна адреса је могла да адресира укупно један [[мегабајт]] (1.048.576 бајтова), што је у то време био доста велики број за мали рачунар. Концепт сегмента регистара није био нов за многе mainframes (mainframe су врло велики рачунари способни да подрже стотине или чек хиљаде корисника) који су користили сегмент регистар да брзо мењају различите задатке. У пракси, на х86x86 је било (је) доста критика за имплементацију која у великој мери компликује много заједничких програмских задатака и компајлере. Међутим, архитектура убрзо дозвољава линеарно 32-битно адресирање (почевши од 80386 краје 1985. године), али главним актерима (као што је [[Мајкрософт|Microsoft]]) је требало неколико година да конвертују њихове 16-битно базиране системе. 80386 (и 80486) се стога још много година у великој мери користио као брз (али још увек 16-битно заснован) 8086.
 
Подацима и/или кодовима се могло управљати у "near" 16-битним сегментима у оквиру 1 [[Мегабајт|МВ]] адресног простора, или је компајлер могао да ради у "far" моду користећи 32-битне сегмент/офсет парове достижући (само) 1МВ. Иако ће се то показати прилично ограничавајућим до средине 1980. година, то је радило за PC тржиште у настајању, а направило га је врло једноставним за превођење софтвера са старих [[Интел 8008|8008]], [[intel 8080|8080]], [[Интел 8085|8085]] и Z80 на новије процесоре. Током 1985. године, модел 16-битне адресе постао је ефикасан увођењем 32-битних офсет регистара, у 386 дизајну.
Ред 143:
 
== Режими адресирања ==
Режими адресирања за 16-битни х86x86 процесор могу се сумирати овом формулом:
 
:<math>
Ред 152:
</math>
 
Режими адресирања за 32-битну величину адресе на 32-битним и 64-битним х86x86 процесорима могу се сумирати овом формулом:
 
:<math>
Ред 161:
</math>
 
Режими адресирања за 64-битни код на 64-битном х86x86 процесору могу се сумирати овом формулом:
 
:<math>
Ред 179:
8086 је имао 64КВ 8-битног ( или алтернативно 32К – речи од 16-бита) У/И простора, као и 64КВ (један сегмент) стека у меморији подржаној од рачунарског хардвера. Само се речи (2 бајта) могу ставити на [[Стек (апстрактни тип података)|стек]]. Стек расте надоле (ка нумеричко нижим адресама), његово дно показће се помоћу SS:SP. Постоје 256 прекида, које могу да се покрену помоћу и хардвер и софтвер. Прекиди могу каскадирати, користећи стек за чување повратне адресе.
 
== Х86X86 регисти ==
 
=== 16-бита ===
Ред 189:
 
=== 32-бита ===
Са појавом 32-битног 80386 процесора, 16-битни регистри опште намене, базни регистар, индексни регистар, инструкцијски показивач, и FLAGS регистар, али не и сегментни регистри, су проширени на 32 бита. Ово је представљено префиксом "E" (за проширено) на име регистра у х86x86 асемблерском језику. Тако, AX регистар одговара најнижим битовима новог 32-битног EAX регистра, SI одговара најнижим 16 битовима ESI, и тако даље. Регистри опште намене, базни регистри и индекс регистри могу се користити као основни у режиму адресирања, и сви ти регистри осим стек показивача могу бити коришћени као индекси у режиму адресирања.
 
Два нова сегментна регистра (FS и GS) су била додата. Са већим бројем регистара, инструкција и операнада, формат [[Машински језик|машинског кода]] је проширен. Да се обезбеди компатибилност уназад, сегменти са извршним кодом се могу означити као они који садрже или 16-битне или 32-битне инструкције. Посебни префикси омогућавају укључивање 32-битних инструкција у 16-битном сегменту или обрнуто.
 
[[Датотека:Table of x86 Registers.png|thumb|доступни регистри у х86x86 скупу инструкцијама.]]
 
80386 је имао опциони копроцесор у покретном зарезу, 80387; он је имао осам 80-битне ширине регистара: st(0) до st(7).<ref>{{Cite book|url=http://www.intel.com/content/dam/www/public/us/en/documents/manuals/64-ia-32-architectures-software-developer-vol-1-manual.pdf|title=Intel 64 and IA-32 Architectures Software Developer’s Manual Volume 1: Basic Architecture|at=Chapter 8|publisher=Intel|date=March 2013}}</ref> Са 80486 процесорска јединица са покретним зарезом (FPU) је интегрисана на чип.
Ред 200:
 
=== 64-бита ===
Почевши са AMD Opteron процесором, х86x86 архитектура се проширила са 32-битних регистара на 64-битне регистре, на сличан начин како се то догодило са 16 на 32-битно проширење. Префикс R идентификује 64-битне регистре (RAX, RBX, RCX, RDX, RSI, RDI, RBP, RSP, RFLAGS, RIP), и осам додатних 64-битних регистара опште намене (R8-R15) је такође додато у стварању х86x86-64. Међутим, ова проширења су употребљива само у 64-битном режиму, који је један од два начина на располагању у дугом моду. Режими адресирања нису се драматично променили од 32-битног режима, осим што је адреса проширена на 64 бита, виртуелне адресе се сада пријављују проширене на 64 бита (како би се онемогућио рижим битова у виртуелним адресама), а други изборни детаљи су драматично смањени. Поред тога, додат је режим адресирања да омогући меморијске референце у односу на RIP ([[IP (процесор)|инструкциони показивач]] или [[IP (процесор)|програмски показивач]]), да олакша имплементацију позиционо-независног кода, који се користи у дељеним библиотекама и неким оперативним системима.
 
=== 128-бита ===
Ред 212:
 
=== Мешовити/специјалне намене ===
х86x86 процесори (почевши од 80386) такође укључују разне специјалне/мешовите регистре као контролне регистре (CR0 до 4, CR8 за само 64-бита), дибаг (за дибаговање) регистре (DR0 до 3, плус 6 и 7), тест регистре (TR3 до 7; само 80486), дескриптор регистре (GDTR, LDTR, IDTR), регистре задатака (TR), и модел-специфичне регистре (MSR, који се појављује са Pentium<ref>Two MSRs of particular interest are SYSENTER_EIP_MSR<!-- (0x176) --> and SYSENTER_ESP_MSR<!-- (0x175) -->, introduced on the Pentium® II processor, which store the address of the kernel mode system service handler<!-- nt!KiFastCallEntry --> 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<!-- http://www.codeguru.com/cpp/misc/misc/system/article.php/c8223/System-Call-Optimization-with-the-SYSENTER-Instruction.htm 266% as fast (166% faster) on a PIII Dual 800 MHz --> than the software interrupt method used previously.</ref>).
 
=== Сврха ===
Ред 366:
 
=== Реални мод ===
Реални режим је радни режим за [[Интел 8086|8086]] и касније х86x86-компатибилних [[Процесор|CPU]]-ова. Реални режим карактерише се помоћу 20-битног простора сегментне меморијске адресе (што значи да само 1МВ меморије може бити приступан), директним приступом софтвера на [[Мегабајт|BIOS]] рутину и периферни хардвер, и нема концепт меморијске заштите или мултитаскинга на хардверском нивоу. Сви х86x86 CPU-ови у 80286 серији и касније почињу у реалном моду при укључењу; [[Интел 80186|80186]] CPU и ранији процесори су имали само један оперативни мод, који је еквивалентан реалном моду у каснијим чиповима.
 
Да би искористили више од 64КВ меморије, морају бити коришћени сегментни регистри. Ово је створило велике компаликације за имплементацију компајлера, који су увели разне показивачке модове као што су "near", "far" и "huge" да би искористили имплицитну природу сегментиране архитектуре у различитим степенима, са неким показивачима који садрже 16-битни офсет унутар имплицираног сегмента и другим показивачима који садрже сегментне адресе и офсет-ове у оквиру сегмената.
Ред 375:
Intel 80386 увео је подршку страничења у заштићеном режиму, механизам који омогућује коришћење остраничене [[Виртуелна меморија|вируелне меморије]].
 
Страничење се користи интензивно помоћу модерних мултитаскинг оперативних система. [[Линукс|Linux]], [[386БСД|386BSD]] и [[Виндоус NT|Windows NT]] су развијени за 386 пошто је то била прва Intel-ова архитектура CPU-а која је подржавала 32-битни сегментни офсет. 386 архитектура је постала основна за даљи развој х86x86 серије.
 
Х86X86 процесори који подржавају заштићени режим у реалном моду за заосталу компатибилност са старијом 8086 класом процесора. По укључењу (а.к.а [[Покретач оперативног система|покретање]]), процесор се покреће у реалном режиму, а затим почиње извршавање инструкција. Оперативни системски boot code (boot code су у основи "инструкције" које се покрећу на рачунару када он стартује), који може бити складиштен у [[ROM]]-у, може да стави процесор у заштићени режим да омогући станичење и остале функције. Скуп инструкција у заштићеном режиму је заостала компатибилан са оном која се користи у реалном режиму.
 
==== Виртуелни 8086 мод ====
Ред 383:
 
=== Дуги мод ===
До 2002. године, било је очигледно да 32-битно адресни простор х86x86 архитектуре ограничава своје перформансе у апликацијама које захтевају велике скупове података. 32-битни адресни простор би омогућио процесору да директно адресира само 4GB података, величина који превазилази апликације као што су видео процесовање и database engines. Коришћењем 64-битних адреса, један може да директно адресира 16 [[Ексабајт|EB]] (16 милијарди GB) података, иако већина 64-битних архитектура не подржава потпуни приступ 64-битном адресном простору (AMD64, на пример, подржава само 48 бита, подељених у 4 нивоа адресирања, од 64-битнох адреса).
 
[[AMD]] је развио 64-битни проширење 32-битне х86x86 архитектуре која се тренутно користи у х86x86 процесорима, која се у почетку називала х86x86-64, а касније је преименована у AMD64. Opteron, Athlon 64, Turion 64, и касније [[Семпрон|Sempron]] породице процесора користе ову архитектуру. Успех AMD64 линије процесора у комбинацији са млаким пријемом IA-64 архитектуре приморао је Intel да објави своју имплементацију AMD64 скупа инструкција. Intel је претходно имплементирао подршку за AMD64,<ref>[http://www.geek.com/intels-yamhill-technology-x86-64-compatible/ Intel's Yamhill Technology: x86-64 compatible | Geek.com<!-- Bot generated title -->]</ref> али је одлучио да га не омогући у нади да 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".
Ред 391:
Дуги мод је углавном проширење 32-битног скупа инструкција, али за разлику од 16-ка-32-битној транзицији, многе инструкције су пале у 64-битном моду. Ово у ствари не утиче на заосталу бинарну компатибилност (која ће извршити старији код у другом моду који задржавају подршку за те инструкције), али мења начин на који асемблер и компајлер морају да раде за нови код.
 
Ово је био први пут да је покренута главна екстензија х86x86 архитектуре и да је потицала од стране других произвођача, а да то није био Intel. Такође је био први пут да је Intel прихватио технологију ове природе из спољашњех извора.
 
== Екстензије ==
 
=== Јединица за покретни зарез ===
Рани х86x86 прецесори могли су бити проширени са хардвером за покретни зарез у облику серије [[Нумеричка анализа|нумеричких]] ко-процесора са покретним зарезом, са именима као 8087, 80287 о 80387, скраћено x87. Ово је такође познато као NPX (Numeric Processor eXtension). Са врло мало изузетака, 80486 и наредни х86x86 процесори су затим интегрисали ову х87 функционалност начип, који је донео х87 инструкције [[дефакто|de facto]] саставни део х86x86 скупа инструкција.
 
Сваки х87 регистар, познат као ST(0) до ST(7), је 80 бита широк и складишти бројеве у [[IEEE 754|IEEE стандарду]] покретног-зареза - формат са двоструко проширеном прецизношћу. Ови регистри су организовани као стек са ST(0) на врху. То је учињено како би се сачувао opcode простор, а регистри су стога били случајно доступни само за било који операнд у регистар-регистар аритметичким операцијама; ST0 мора увек да буде један од два операнада, или извор или одредиште, без обзира да ле је други операнд ST(x) или меморијски операнд.
Ред 413:
 
=== SSE ===
Године 1999, Intel је представио Streaming SIMD Extensions (SSE) [[скуп инструкција]], из чега следи у 2000. години SSE2. Први додатак је дозвољавао растерећење базичних операција у покретном зарезу од х86x86 стека и други је направио 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 ући само у традиционални Заштитини режим.
Ред 420:
 
=== Преширење физичке адресе (PAE) ===
Проширење физичке адресе или PAE било је први пут додато у Intel Pentium Pro, да омогући додатних 4 бита физичког адресирања у 32-битном заштићеном режиму. Величина меморије у Зашзићеном режиму је обично ограничена на 4 [[Гигабајт|GB]]. Путем трикова у процесорским странама и системима за управљање сегментима меморије, х86x86 оперативни систем могао је да приступи више од 32-битног адресног простора, чак и без преласна на 65-битну парадигму. Овај мод не мења дужину сегмента офсета или линеарне адресе; они су још увек само 32 битни.
 
=== Х86X86 ===
У априлу 2003. године, AMD је објавио први х86x86 процесор са 64-битним физичким меморијским адресама регистара способним да адресирају мноого више од 4GB меморије које користе нова х86x86-64 проширења (такође познат као х64). Intel је представио њихов први х86x86-64 процесор у јулу 2004. године.
 
Х86X86-64 је претходио другој архитектури која користи 64-битно меморијско адресирање: Intel је представио Itanium 2001. године за рачунарско тржиште високох перформанси. Међутим, Itanium је био некомпатибилан са х86x86 и данас се не користи у широкој употреби. Х86X86-64 такође је представио NX бит, који нуди неку заштиту од безбедносних грешака изазваних прекорачењем бафера.
 
=== Виртуелизација ===
Пре 2005. године х86x86 архитектура процесора није била у стању да испуни Popek и Goldberg захтеве – спецификација за виртуализацију настала је 1974. године од Gerald J. Popek и Robert P. Goldberg. Међутим оба, комерцијална и отворени извор х86x86 витуализације хипервизорских производа били су развијени коришћењем софтверско-базираних виртуализација. Комерцијални системи укључују VMware ESX, VMware Workstation, Parallels, Microsoft Hyper-V Server, и Microsoft Virtual PC; док системи отвореног извора укључују QEMU/KQEMU, VirtualBox, и Xen.
 
Увођење AMD-V и Intel VT-x скупа инструкција у 2005 години, омогућава х86x86 процесорима да задовоље Popek and Goldberg виртуализационе захтеве.<ref>{{cite conference
|first= Keith
|last= Adams
Преузето из „https://sr.wikipedia.org/wiki/X86