Intel 8086

[right|thumb|240px|Мікрапрацэсар [KP1810BM86, савецкі клон Intel 8086]]
**Intel 8086** (таксама вядомы як **iAPX86**) — першы 16-бітны мікрапрацэсар кампаніі Intel, які распрацоўваўся з вясны 1976 года і выпушчаны 8 чэрвеня 1978 года. Працэсар меў набор каманд, які ўжываецца і ў сучасных працэсарах, менавіта ад гэтага працэсара бярэ свой пачатак вядомая на сёння архітэктура x86.

Асноўным канкурэнтам мікрапрацэсара i8086 былі Motorola 68000, Zilog Z8000, чыпсеты F-11 і J-11 сямейства PDP-11, MOS Technology 65C816. у галіне ваенных распрацовак канкурэнтамі з’яўляліся працэсары-рэалізацыі MIL-STD-1750A.

Аналагамі мікрапрацэсара i8086 з’яўляліся такія распрацоўкі, як NEC V30, які быў на 5 % прадукцыйней i8086, але пры гэтым быў цалкам з ім сумяшчальны. Савецкім аналагам з’яўляўся мікрапрацэсар К1810ВМ86, які ўваходзіў у серыю мікрасхем К1810.

## Гісторыя 
### Папярэднікі 
У 1972 годзе Intel выпусціла 8008, першы 8-бітны мікрапрацэсар. Ён ужываў набор інструкцый, распрацаваны карпарацыяй Datapoint для праграмавальных камп’ютарных тэрміналаў, прыдатны і для ўніверсальных працэсараў. Гэты працэсар патрабаваў некалькіх дадатковых мікрасхем для ўжывання ў паўнавартасным камп’ютары, збольшага таму, што ён ужываў маленькі 18-пінавы корпус ад мікрасхем DRAM, якія вырабляў Intel, і адпаведна не мог мець асобную шыну адрасу.

Двума гадамі пазней, у 1974, быў запушчаны 8080, у новым, 40-пінавым DIP-корпусе, першапачаткова распрацаваным для мікрасхем калькулятараў. Ён меў асобную шыну адрасу і пашыраны набор інструкцый, кодава- (не бінарна-) сумяшчальны з 8008, дапоўнены для зручнасці праграмавання некалькімі 16-бітнымі інструкцыямі. Працэсар i8080 часта называюць першым па-сапраўднаму зручным і карысным мікрапрацэсарам. У 1977 годзе ён быў заменны на i8085, з адным сілкуючым напружаннем (+5В) замест трох розных на папярэдніку і некалькімі іншымі ўдасканаленнямі. Найбольш вядомымі супернікамі былі 8-бітныя Motorola 6800 (1974), Microchip PIC16X (1975) (напэўна маецца на ўвазе працэсар CP1600 фірмы General Instrument, які з’яўляецца продкам мікракантролераў Microchip http://en.wikipedia.org/wiki/PIC_microcontroller#History), MOS Technology 6502 (1975), Zilog Z80 (1976), і Motorola 6809 (1978).

### Распрацоўка 
Праект 8086 быў пачаты ў траўні 1976 года, і першапачаткова задумваўся як часовая замена для амбіцыйнага праекта iAPX 432 (таксама вядомага як 8800). Гэта была спроба, з аднаго боку, супрацьстаяць менш спазняўшымся 16-ці і 32-бітным працэсарам іншых вытворцаў (такіх як Motorola, Zilog і National Semiconductor), а з другой — барацьба з пагрозай ад Zilog Z80 (распрацаванага камандай пад кіраўніцтвам сышоўшага з Інтэл Фрэдэрыка Фаджын), які стаў вельмі паспяховым. Першая версія архітэктуры 8086 (сістэма каманд, перапыненні, работа з памяццю і ўводам/вывадам) была распрацавана з сярэдзіны траўня да сярэдзіны жніўня Стывенам Морзэ. Потым каманда распрацоўшчыкаў была павялічана да чатырох чалавек, якія зрабілі два асноўныя праектныя дакументы — 8086 Architectural Specifications і 8086 Device Specifications. Падчас распрацоўкі не ўжывалася спецыялізаваныя CAD-праграмы, а дыяграмы былі зроблены з тэкставых сімвалаў. Ужываліся ўжо апрабаваныя элементы мікраархітэктуры і фізічнай рэалізацыі, у асноўным ад i8085.

## Апісанне 
Рынак 8-разрадных мікрапрацэсараў у канцы 1970-х быў перапоўнены, і Intel кідае спробы замацавацца на ім і прэзентуе свой першы 16-бітны працэсар. Працэсар i8086 уяўляе сабой мадэрнізаваны i8080 і, хоць распрацоўшчыкі не ставілі перад сабой мэту дасягнуць поўнай сумяшчальнасці на праграмным узроўні, большасць праграм, напісаных для i8080, здольны выконвацца і на i8086 пасля перакампіляцыі. Новы працэсар нясе ў сабе мноства зменаў, якія дазволілі значна (у 10 разоў) павялічыць прадукцыйнасць у параўнанні з папярэднім пакаленнем працэсараў кампаніі.

### Рэгістры 
|-
|
|-
| *Рэгістры 8086*
|}
Усяго ў працэсары i8086 было 14 16-разрадных рэгістраў: 4 рэгістры агульнага прызначэння (AX, BX, CX, DX), 2 індэксныя рэгістры (SI, DI), 2 указальныя (BP, SP), 4 сегментныя рэгістры (CS, SS, DS, ES), праграмны лічыльнік ці ўказальнік каманды (IP) і рэгістр флагаў (FLAGS, уключае ў сябе 9 флагаў). Пры гэтым рэгістры даных (AX, BX, CX, DX) дапушчалі адрасацыю не толькі цэлых рэгістраў, але і іх малодшай паловы (рэгістры AL, BL, CL, DL) і старэйшай паловы (рэгістры AH, BH, CH, DH), што дазваляла выкарыстоўваць не толькі новае 16-разраднае ПЗ, але захоўвала сумяшчальнасць і са старымі праграмамі (але іх трэба было перакампіляваць).

### Шыны 
Памер шыны адрасу быў павялічаны з 16 да 20 бітаў, што дазволіла адрасаваць 1 Мбайт (220 байтаў) памяці. Шына даных была 16-разраднай. Аднак у мікрапрацэсары шына даных і шына адрасу ўжывалі адны і тыя ж кантакты на корпусе. Гэта прывяло да таго, што нельга адначасова падаваць на сістэмную шыну адрасы і даныя. Мультыплексаванне адрасоў і даных у часе скарачае колькасць кантактаў корпуса да 20, але і замаруджвае хуткасць перадачы даных.

### Работа з памяццю 
1-ы варыянт.
Для таго каб адрасаваць большы, чым i8080, аб’ём памяці, патрабавалася змяніць спосаб адрасацыі памяці. Ужываючы старыя метады, калі адрас да ячэйкі памяці змяшчаўся ў указальных рэгістрах, прыходзілася б павялічваць памер гэтых самых рэгістраў, каб мець магчымасць звяртацца да большага аб’ёму памяці. Таму для адрасацыі 1 Мбайт памяці выкарыстоўвалі наступную схему. На шыну адраса падаваўся фізічны адрас памерам 20 біт, які фармаваўся шляхам складання зместу аднаго з сегментных рэгістраў (16 біт), памножанага на 24, са зместам указальнага рэгістра: такім чынам, адрасацыя ячэйкі памяці праводзілася па *нумару сегмента* і *эфектыўнаму адрасу ячэйкі ў сегменце* (таксама завецца ссоўваннем). Калі вынік складання аказваўся больш, чым 220&nbsp;-1, то 21-ы біт адкідваўся; такая працэдура завецца «закручваннем» адраса (). Гэты метад у далейшым (пасля з’яўлення абароненага рэжыму) звалі рэальным рэжымам адрасацыі працэсара, такі рэжым дазваляе адрасаваць да 1 Мбайт памяці.

2-і варыянт.
Для таго каб адрасаваць 1 мегабайт памяці (20 біт адрасу) з ужываннем 16-бітных рэгістраў выкарыстоўваецца сегментаванне. Старэйшыя 4 біты адрасу выводзяцца на асобныя кантакты корпусу, а малодшыя 16 выводзяцца на сумешчаную шыну адрасу-даных.
Але мяжа сегмента не жорсткая, а плаваючая. Для таго, каб адрасаваць пэўны сегмент, ужываюцца 16-бітныя рэгістры сегмента, значэнне якіх ссоўваецца на 4 біты ўверх і складаецца з указальным 16-бітным рэгістрам. Атрыманае значэнне — 20-бітны адрас памяці ці прылады — выводзіцца на кантакты.
Калі вынік складання аказваецца большым за 1 мегабайт, выводзяцца толькі малодшыя 20 бітаў адрасу, 21-біт адкідваецца.

Такім чынам, памяць падзяляецца на сегменты памерам 64 Кбайт кожны, пры тым кожны сегмент пачынаецца з адрасу, кратнага 16 (мяжа параграфа); памяць у 1 Мбайт падзялялася на 16 сегментаў. Гэтыя 16 сегментаў называюць старонкамі памяці. У камп’ютары, падобным IBM PC, апошнія 6 старонак (A, B, C, D, E, F) памяці (г. зв. *верхняя памяць* — ) выкарыстоўваліся для відэапамяці і BIOS-а, гэта абмяжоўвала памяць, даступную карыстальніку, аб’ёмам у 640 Кбайт (г. з. *звычайная памяць* — ; старонкі 0~9).

На той час такі рэжым адрасацыі забяспечваў мноства пераваг: ёмістасць памяці магла складаць да 1 Мбайт, хоць каманды маніпулявалі 16-бітнымі адрасамі; спрошчвалася ўжыванне асобных абласцей памяці для праграмы, яе даных і стэка; спрашчалася распрацоўка прылад, сумяшчальных адна з другой.

### Сістэма каманд 
Сістэма каманд працэсара i8086 складаецца з 98 каманд (і больш 3800 іх варыяцый): 19 каманд перадачы даных, 38 каманд іх апрацоўкі, 24 каманды пераходу і 17 каманд кіравання працэсарам. Магчыма 7 рэжымаў адрасацыі. Мікрапрацэсар не змяшчаў каманды для работы з лікамі з плаваючай коскай. Дадзеная магчымасць рэалізавалася асобнай мікрасхемай, званай матэматычны сапрацэсар, які ўсталёўваўся на мацярынскай плаце. Сапрацэсар зусім не абавязкова павінен быць выраблены Intel (мадэль i8087), напрыклад, некаторыя вытворцы мікрасхем, такія як Weitek, выраблялі больш прадукцыйныя сапрацэсары, чым Intel.

Сістэма каманд працэсара i8086 уключае ў сябе некалькі вельмі моцных радковых інструкцый. Калі інструкцыя мае прэфікс REP (паўтор), то працэсар будзе выконваць аперацыі з блокамі — перасоўванне блока даных, параўнанне блокаў даных, наданне пэўнага значэння блоку даных вызначанага памеру, і г.д., адна інструкцыя 8086 з прэфіксам REP можа выконваць 4-5 інструкцый, якія выконваюцца на некаторых іншых працэсарах. Але варта згадаць, што падобныя прыёмы былі рэалізаваны і ў іншых працэсарах — Zilog Z80 меў інструкцыі перасоўвання і пошуку блокаў, а Motorola 68000 можа выконваць аперацыі з блокамі, ужываючы толькі дзве каманды.

У мікрапрацэсары i8086 была ўжыта прымітыўная форма канвеернай апрацоўкі. Блок інтэрфейса з шынай падаваў струмень каманд да выканальнай прылады праз 6-байтавую чаргу каманд. Такім чынам, выбарка і выкананне новых каманд маглі адбывацца адначасова. Гэта значна павялічвала прапускную здольнасць працэсара і пазбаўляла патрэбы чакаць счытвання каманды з памяці пры занятым іншымі аперацыямі інтэрфейсе мікрасхемы (у той час хуткасць памяці была значна большай за хуткасць гэтага працэсара).

## Мікракамп’ютары на аснове i8086 
1-ы варыянт.
У персанальных камп’ютарах працэсар i8086 практычна не ўжываўся з-за дарагавізны спецыялізаваных мікрасхем, якія былі патрэбныя для работы працэсара. Гэта зразумелі і ў Intel, у 1979 годзе яна выпускае працэсар i8088, у якога шына даных была 8-бітнай.

2-і варыянт.
З-за недахопу (яшчэ не былі распрацаваныя) дапаможных 16-бітных мікрасхем, і магчымасці ўжывання буйнога парку 8-бітных, а таксама для патанненя і змяншэння памераў плат, было вырашана выпусціць 8-бітны варыянт працэсара (i8088).
У 70-я гады мікрасхемы дынамічнай аператыўнай памяці мелі 1-бітную структуру і для 8-бітнай сістэмы патрабавалася 8, а для 16-бітнай — 16 мікрасхем памяці. Таму выпуск 8 разраднай версіі патанняў вытворчасць і змяншаў памер друкаванай платы камп’ютара.

Але ж у некаторых мікракамп’ютарах выкарыстоўваліся і i8086, адным з такіх з’яўляецца Mycron 2000 — першы камерцыйны мікракамп’ютар на базе i8086. Машына для апрацоўкі тэкстаў IBM Displaywriter, Compaq DeskPro і Wang Professional Computer таксама ўжывалі i8086.

## Тэхнічныя характарыстыкі 
* Дата анонса: 8 чэрвеня 1978 года
* Тактавая частата (МГц): ад 4 да 10
** 5 (мадэль 8086), пры частаце 4,77 прадукцыйнасць — 0,33 MIPS
** 8 (мадэль 8086-2, 0,66 MIPS)
** 10 (мадэль 8086-1, 0,75 MIPS)
** Прыблізныя затраты часу на аперацыі, працэсарных цыклаў (EA — час, неабходны для разліку эфектыўнага адрасу памяці, які вар’іруецца ад 5 да 12 цыклаў):
*** Сумаванне: 3-4 (рэгістравае), 9+EA — 25+EA — пры аперацыях з памяццю
*** Памнажэнне: 70-118 (рэгістравае), 76+EA — 143+EA — пры аперацыях з памяццю
*** Перасоўванне даных: 2 (паміж рэгістрамі), 8+EA — 14+EA — пры аперацыях з памяццю
* Разраднасць рэгістраў: 16 біт
* Разраднасць шыны даных: 16 біт
* Разраднасць шыны адраса: 20 біт
* Аб’ём адрасавальнай памяці: 1 Мбайт
* Адрасная прастора I/O: 64 Кбайт
* Колькасць транзістараў: 29 000
* Тэхпрацэс (нм): 3000 (3 мкм)
* Плошча крышталя (кв. мм): ~30 (па іншых звестках, 16 мм²)
* Максімальнае цеплавыдзяленне: 1,75 Вт
* Напружанне сілкавання: +5 В
* Раздым: няма (мікрасхема прылітоўвалася да платы)
* Корпус: 40-кантактны керамічны альбо пластыкавы DIP, пазней — 56-кантактны QFP ці 44-кантактны PLCC
* Падтрымальныя тэхналогіі: 98 інструкцый
* Аб’ём чаргі каманд: 6 байтаў

## Спасылкі 
* Апісанне і фатаграфіі працэсара Intel 8086 
* Краткое описание микропроцессора Intel 8086  
* Як распрацоўваліся першыя мікрасхемы Intel 

Катэгорыя:X86
Катэгорыя:Мікрапрацэсары фірмы Intel
Катэгорыя:З’явіліся ў 1978 годзе