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

Садржај обрисан Садржај додат
Нема описа измене
Нема описа измене
Ред 267:
|}
 
{| class="wikitable"
|+ 64-битни режим – само регистри опште намене (R8, R9, R10, R11, R12, R13, R14, R15)
! style="width:50pt;"| 64
! style="width:50pt;"| 56
! style="width:50pt;"| 48
! style="width:50pt;"| 40
! style="width:50pt;"| 32
! style="width:50pt;"| 24
! style="width:50pt;"| 16
! style="width:50pt;"| 8
|-
| colspan="8" style="text-align:center;"| ?
|-
| colspan="4" style="background:lightgrey" |
| colspan="4" style="text-align:center;"| ?D
|-
| colspan="6" style="background:lightgrey" |
| colspan="2" style="text-align:center;"| ?W
|-
| colspan="7" style="background:lightgrey" |
| style="text-align:center;"| ?B
|}
 
{| class="wikitable"
|+ Сегментни регистри (C, D, S, E, F и G)
! style="width:50pt;"| 16
! style="width:50pt;"| 8
|-
| colspan="2" style="text-align:center;"| ?S
|}
 
{| class="wikitable"
|+ Показивачки регистри (S и B)
! style="width:50pt;"| 64
! style="width:50pt;"| 56
! style="width:50pt;"| 48
! style="width:50pt;"| 40
! style="width:50pt;"| 32
! style="width:50pt;"| 24
! style="width:50pt;"| 16
! style="width:50pt;"| 8
|-
| colspan="8" style="text-align:center;"| R?P
|-
| colspan="4" style="background:lightgrey" |
| colspan="4" style="text-align:center;"|E?P
|-
| colspan="6" style="background:lightgrey" |
| colspan="2" style="text-align:center;"|?P
|-
| colspan="7" style="background:lightgrey" |
| style="text-align:center;"| ?PL
|}
Напомена: ?PL регистри су доступни само у 64-битном режиму
 
{| class="wikitable"
|+ Индекс регистри (S и D)
! style="width:50pt;"| 64
! style="width:50pt;"| 56
! style="width:50pt;"| 48
! style="width:50pt;"| 40
! style="width:50pt;"| 32
! style="width:50pt;"| 24
! style="width:50pt;"| 16
! style="width:50pt;"| 8
|-
| colspan="8" style="text-align:center;"| R?I
|-
| colspan="4" style="background:lightgrey" |
| colspan="4" style="text-align:center;"| E?I
|-
| colspan="6" style="background:lightgrey" |
| colspan="2" style="text-align:center;"| ?I
|-
| colspan="7" style="background:lightgrey" |
| style="text-align:center;"| ?IL
|}
 
{| class="wikitable"
|+ Инструкцијски показивачи регистри (I)
! style="width:50pt;"| 64
! style="width:50pt;"| 56
! style="width:50pt;"| 48
! style="width:50pt;"| 40
! style="width:50pt;"| 32
! style="width:50pt;"| 24
! style="width:50pt;"| 16
! style="width:50pt;"| 8
|-
| colspan="8" style="text-align:center;"| RIP
|-
| colspan="4" style="background:lightgrey" |
| colspan="4" style="text-align:center;"| EIP
|-
| colspan="6" style="background:lightgrey" |
| colspan="2" style="text-align:center;"| IP
|}
 
== Режими рада ==
 
=== Реални мод ===
Реални режим је радни режим за [[Интел 8086|8086]] и касније х86-компатибилних [[Процесор|CPU]]-ова. Реални режим карактерише се помоћу 20-битног простора сегментне меморијске адресе (што значи да само 1МВ меморије може бити приступан), директним приступом софтвера на [[Мегабајт|BIOS]] рутину и периферни хардвер, и нема концепт меморијске заштите или мултитаскинга на хардверском нивоу. Сви х86 CPU-ови у 80286 серији и касније почињу у реалном моду при укључењу; [[Интел 80186|80186]] CPU и ранији процесори су имали само један оперативни мод, који је еквивалентан реалном моду у каснијим чиповима.
 
Да би искористили више од 64КВ меморије, морају бити коришћени сегментни регистри. Ово је створило велике компаликације за имплементацију компајлера, који су увели разне показивачке модове као што су "near", "far" и "huge" да би искористили имплицитну природу сегментиране архитектуре у различитим степенима, са неким показивачима који садрже16-битни офсет унутар имплицираног сегмента и другим показивачима који садрже сегментне адресе и офсет-ове у оквиру сегмената.
 
=== Заштићени режим ===
Додатно, у реалном моду, Intel 80286 подржава заштићени режим, који шири адресибилну фитичку меморију до 16МБ и адресибилну [[Виртуелна меморија|виртуелну меморију]] до 1[[Гигабајт|GB]], и који омогућава заштићену меморију, који спречава програме да кваре један другог. Ово се ради коришћењем сегментних регистара само за складиштење индекса у табелу сегмента. Постојале су такве две табеле, Глобална Дескриптор Табела (GDT) и Локална Дескриптор Табела (LDT), свака садржи до 8192 дескриптора сегмената, сваки сегмент даје приступ за 64КВ меморије. Табела сегмента обезбеђује 24-битну базну адресу, која се може додати на жељени офсет да би се створила апсолутна адреса. Сваком сегменту може бити додељен један од четири нивоа прстена који се користе за хардверску-засновану [[Рачунарска безбједност|компјутерску безбедност]].
 
Intel 80386 увео је подршку страничења у заштићеном режиму, механизам који омогућује коришћење остраничене [[Виртуелна меморија|вируелне меморије]].
 
Страничење се користи интензивно помоћу модерних мултитаскинг оперативних система. [[Линукс|Linux]], [[386БСД|386BSD]] и [[Виндоус НТ|Windows NT]] су развијени за 386 пошто је то била прва Intel-ова архитектура CPU-а која је подржавала 32-битни сегментни офсет. 386 архитектура је постала основна за даљи развој х86 серије.
 
Х86 процесори који подржавају заштићени режим у реалном моду за заосталу компатибилност са старијом 8086 класом процесора. По укључењу (а.к.а [[Покретач оперативног система|покретање]]), процесор се покреће у реалном режиму, а затим почиње извршавање инструкција. Оперативни системски boot code (boot code су у основи "инструкције" које се покрећу на рачунару када он стартује), који може бити складиштен у [[ROM]]-у, може да стави процесор у заштићени режим да омогући станичење и остале функције. Скуп инструкција у заштићеном режиму је заостала компатибилан са оном која се користи у реалном режиму.
 
==== Виртуелни 8086 мод ====
Постоји под-режим рада у 32-битном заштићеном режиму, који се зове виртуелни 8086 мод. Ово је у суштини хибрини радни мод који омогућава програме у реалном режиму и оперативним системима да раде док су под заштићеним режимом надзора оперативног система. Ово омогућава велику флексибилност у извршавању програма у заштићеном режиму и програма у реалном режиму, истовремено. Овај режим је доступан само у 32-битној верзији заштићеног режима; виртуелни 8086 мод не постоји у 16-битној верзији заштићеног режима, или у дугом моду.
 
=== Дуги мод ===
До 2002. године, било је очигледно да 32-битно адресни простор х86 архитектуре ограничава своје перформансе у апликацијама које захтевају велике скупове података. 32-битни адресни простор би омогућио процесору да директно адресира само 4GB података, величина који превазилази апликације као што су видео процесовање и database engines. Коришћењем 64-битних адреса, један може да директно адресира 16 [[Ексабајт|EB]] (16 милијарди GB) података, иако већина 64-битних архитектура не подржава потпуни приступ 64-битном адресном простору (AMD64, на пример, подржава само 48 бита, подељених у 4 нивоа адресирања, од 64-битнох адреса).
 
[[AMD]] је развио 64-битни проширење 32-битне х86 архитектуре која се тренутно користи у х86 процесорима, која се у почетку називала х86-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".
 
Дуги мод је углавном проширење 32-битног скупа инструкција, али за разлику од 16-ка-32-битној транзицији, многе инструкције су пале у 64-битном моду. Ово у ствари не утиче на заосталу бинарну компатибилност (која ће извршити старији код у другом моду који задржавају подршку за те инструкције), али мења начин на који асемблер и компајлер морају да раде за нови код.
 
Ово је био први пут да је покренута главна екстензија х86 архитектуре и да је потицала од стране других произвођача, а да то није био Intel. Такође је био први пут да је Intel прихватио технологију ове природе из спољашњех извора.
 
== Екстензије ==
 
=== Јединица за покретни зарез ===
Рани х86 прецесори могли су бити проширени са хардвером за покретни зарез у облику серије [[Нумеричка анализа|нумеричких]] ко-процесора са покретним зарезом, са именима као 8087, 80287 о 80387, скраћено x87. Ово је такође познато као NPX (Numeric Processor eXtension). Са врло мало изузетака, 80486 и наредни х86 процесори су затим интегрисали ову х87 функционалност начип, који је донео х87 инструкције [[De facto|de facto]] саставни део х86 скупа инструкција.
 
Сваки х87 регистар, познат као ST(0) до ST(7), је 80 бита широк и складишти бројеве у [[IEEE 754|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!. Увођење ове технологије поклопило се са успоном [[3Д|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. Први додатак је дозвољавао растерећење базичних операција у покретном зарезу од х86 стека и други је направио 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]]. Путем трикова у процесорским странама и системима за управљање сегментима меморије, х86 оперативни систем могао је да приступи више од 32-битног адресног простора, чак и без преласна на 65-битну парадигму. Овај мод не мења дужину сегмента офсета или линеарне адресе; они су још увек само 32 битни.
 
=== Х86 ===
У априлу 2003. године, AMD је објавио први х86 процесор са 64-битним физичким меморијским адресама регистара способним да адресирају мноого више од 4GB меморије које користе нова х86-64 проширења (такође познат као х64). Intel је представио њихов први х86-64 процесор у јулу 2004. године.
 
Х86-64 је претходио другој архитектури која користи 64-битно меморијско адресирање: Intel је представио Itanium 2001. године за рачунарско тржиште високох перформанси. Међутим, Itanium је био некомпатибилан са х86 и данас се мање користи у широкој употреби. Х86-64 такође је представио NX бит, који нуди неку заштиту од безбедносних грешака изазваних прекорачењем бафера.
 
=== Виртуелизација ===
Пре 2005. године х86 архитектура процесора није била у стању да испуни Popek и Goldberg захтеве – спецификација за виртуализацију настала је 1974. године од Gerald J. Popek и Robert P. Goldberg. Међутим оба, комерцијална и отворени извор х86 витуализације хипервизорских производа били су развијени коришћењем софтверско-базираних виртуализација. Комерцијални системи укључују VMware ESX, VMware Workstation, Parallels, Microsoft Hyper-V Server, и Microsoft Virtual PC; док системи отвореног извора укључују QEMU/KQEMU, VirtualBox, и Xen.
 
Увођење AMD-V и Intel VT-x скупа инструкција у 2005 години, омогућава х86 процесорима да задовоље Popek and Goldberg виртуализационе захтеве.<ref>{{cite conference
| first = Keith
| last = Adams
| coauthors = and Agesen, Ole
| title = A Comparison of Software and Hardware Techniques for x86 Virtualization
| booktitle = Proceedings of the International Conference on Architectural Support for Programming Languages and Operating Systems, San Jose, CA, USA, 2006
| date = 2006-21-2006
| url = http://www.vmware.com/pdf/asplos235_adams.pdf
| id = ACM 1-59593-451-0/06/0010
| accessdate = 2006-12-22 }}</ref>
 
== Види још ==
 
* [[PowerPC]]
 
 
 
 
 
== Нотес и референце ==
Преузето из „https://sr.wikipedia.org/wiki/X86