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

Садржај обрисан Садржај додат
Disambiguated: SSEStreaming SIMD Extensions
Autobot (разговор | доприноси)
м Бот: исправљена преусмерења
Ред 111:
 
=== Основне особине архитектуре ===
Х86 архитектура је променљиве дужине инструкције, пре свега "[[Рачунар са сложеним скупом инструкција|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-битних предака) је направио важан метод регистар-релативног адресирања (корисећи мале непосредне офсете) приступа операнадима, посебно на стеку. Много напора је стога уложено у прављење таквог приступа као што је брз регистарски приступ, односно један циклус проточних инструкција, у већини случајева у којима је приступ подацима могућ на највишем нивоу у кешу.
Ред 132:
Микрорачунари током касних 1970. година су радили против 16-битнне 64 [[Килобајт|КВ]] адресних лимита, пошто је меморија постајала јефтинија. Неки микрорачунари попут PDP-11 су користили сложене шеме банкарске-замене, или, у случају Digital's VAX, када су редизајнирани много скупљи процесори који су могли директно да раде са 32-битним адресама и подацима. Оригинални 8086, се развио из простог [[Интел 8080|8080]] микропроцесора и, пре свега, у циљу веома малих и јефтиних рачунара и других специјализованих уређаја, уместо усвајања једноставних сегмент регистара који повећавају ширину меморијске адресе за само 4 бита. Множењем 64КВ магистрале са 16, 20-битна адреса је могла да адресира укупно један [[мегабајт]] (1.048.576 бајтова), што је у то време био доста велики број за мали рачунар. Концепт сегмента регистара није био нов за многе mainframes (mainframe су врло велики компјутери способни да подрже стотине или чек хиљаде корисника) који су користили сегмент регистар да брзо мењају различите задатке. У пракси, на х86 је било (је) доста критика за имплементацију која у великој мери компликује много заједничких програмских задатака и компајлере. Међутим, архитектура убрзо дозвољава линеарно 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 дизајну.
 
У реалном моду, сегментација се постиже шифтовањем сегментних адреса улево за 4 бити и додавањем офсета у реду како би се добила коначна 20-битна дреса. На пример, ако је DS A000h и SI 5677h, DS:SI ће указивати на апсолутну адресу DS × 10h + SI = A5677h. Тако је укупан адресни простор у реалном режиму 220 бајта, или 1МВ, прилично импресивна цифра за 1978. годину. Све меморијске адресе се састоје од сегмента и офсета; свака врста приступа (код, подаци, или стек) има default сегментни регистар који је у вези са њим (за податке уобичајени регистар је DS, за код CS, и за стек SS). За приступ подацима, сегментни регистар може експлицитно да се наведе (коришћењем сегментног override префикса) да користи било који од четири сегмент регистра.
Преузето из „https://sr.wikipedia.org/wiki/X86