Intel 8086 (також відомий якiAPX86,i86) — перший16-бітниймікропроцесор компаніїIntel, що розроблявся з весни1976 року і був випущений8 червня1978.[1][2]Процесор мав набір команд, який застосовується і в сучасних процесорах, саме від нього бере свій початок відома на сьогодні архітектура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.
На базі процесору у 1978 року заснував лінійку чипів, яка включала 80286, 80386, 80486 та наступника 80486, легендарну серію Pentium. Найпомітнішим явищем зі спадщини 8086 є його архітектура набору інструкцій (instruction set architecture, ISA), яка підтримувалася та розширювалася протягом десятиліть. Intel також визнає його важливість: у 2018 році компанія відсвяткувала сорокову річницю 8086 випуском процесора Core i7-8086K.[3]
У1972 році Інтел випустила8008, перший 8-бітний мікропроцесор. Він мав набір інструкцій, розроблений корпорацієюDatapoint для програмованихкомп'ютерних терміналів, придатний і для універсальних процесорів. Цейпроцесор потребував декількох додатковихмікросхемінтерфейсу для використання в повноцінному комп'ютері, тому що мав маленький 18-піновий корпус від мікросхемDRAM, вироблених Інтел, і відповідно не міг мати окремушину адреси.
Через два роки,1974-го, було випущено8080, у новому, 40-піновомуDIP-корпусі, спочатку розробленому для мікросхем калькуляторів. Він мав окрему шину адреси і розширений набір інструкцій, сумісних із 8008 за літерними кодами (але не за двійковими кодами) , доповнений для зручності програмування декількома 16-бітними інструкціями. Процесор i8080 часто називають першим по-справжньому зручним і корисним мікропроцесором[джерело?]. У1977 році його заміненили на i8085, з однією напругою живлення (+5 В) замість трьох різних на попереднику і кількома іншими вдосконаленнями. Найвідомішими його конкурентами були 8-бітніMotorola 6800 (1974),Microchip PIC16X (1975),MOS Technology 6502 (1975),Zilog Z80 (1976), іMotorola 6809 (1978).
Проект 8086 розпочали в травні 1976 року, і спочатку він замислювався як тимчасова заміна для амбітного проекту iAPX 432, розвиток якого загальмувався. Це була спроба, з одного боку, протистояти 16-ти і 32-бітовим процесорам інших виробників (таких якMotorola,Zilog іNational Semiconductor), а з іншого — боротьби із загрозою від Zilog Z80 (розробленого командою під керівництвом Фредеріко Фаджін, котрий пішов з Інтел), що став дуже успішним. Перша версія архітектури 8086 (система команд, переривання, робота з пам'яттю і вводом/виводом) була розроблена з середини травня до середини серпня Стівеном Морзе. Потім команда розробників була збільшена до чотирьох чоловік, які представили два основних проектних документи — 8086 Architectural Specifications і 8086 Device Specifications. Під час розробки не застосовувалися спеціалізованіCAD-програми, а діаграми були виконані з текстових символів. Використовувалися вже випробувані елементи мікроархітектури і фізичної реалізації, в основному від i8085.
Microprocessors KR580VM80A (equivalent to i8080), 80H-CPU (equivalent to Z80), M5L8085AP (equivalent to i8085), KM1810VM86 (equivalent to i8086)
Ринок 8-розрядних мікропроцесорів наприкінці1970-х був переповнений, і Intel полишила спроби закріпитися на ньому та випустила свій перший 16-бітний процесор. Процесор i8086 являє собою модернізований процесорi8080 і, хоча розробники не ставили перед собою мету досягти повної сумісності на програмному рівні, більшість програм, написаних для i8080, здатні виконуватися і на i8086 після перекомпіляції. Новий процесор мав багато змін, які дозволили значно (в 10 разів) збільшити продуктивність у порівнянні з попереднім поколінням процесорів компанії.
При цьому загальні регістри (AX, BX, CX, DX) допускали окрему адресацію їх половин: молодшої (регістри AL, BL, CL, DL) і старшої (регістри AH, BH, CH, DH). Це зберігало сумісність зі старими програмами (щоправда, їх необхідно було, принаймні, перекомпілювати) й дозволяло використовувати не лише нове 16-розрядне ПЗ.
Розміршини адреси було збільшено з 16 біт до 20, що дозволило адресувати 1 Мбайт (220 байт) пам'яті.Шина даних була 16-розрядною. Проте шина даних і шина адреси використовували одні й ті ж контакти на корпусі. Це призвело до того, що не можна одночасно подавати на системну шину і адреси, і дані.Мультиплексування адрес і даних у часі скоротило кількість контактів корпусу до 20, але уповільнювало швидкість передавання даних.
Для того, щоб адресувати більший обсяг пам'яті, ніж у і8080, треба було змінити спосіб адресації. Адже якщо використовувати старі методи, коли адреса комірки пам'яті містилася у регістрах, то довелося б збільшувати розмір самих регістрів, щоб мати можливість звертатися до більшого обсягу пам'яті. Тому для адресації 1 Мбайт пам'яті застосовували схему сегментування. Фізична адреса розміром 20 біт, яка подавалася на шину адресації, формувалася шляхом складання вмісту одного із сегментних регістрів (16 біт), помноженого на 24, із вмістом вказівного регістра: таким чином, адреса комірки пам'яті формувалася за номером сегмента й ефективною адресою комірки в сегменті (яка також називається зсувом). Якщо результат додавання виявлявся більшим ніж 220 -1, то 21-ий біт відкидався; така процедура називається «загортанням» адреси (англ.adress wraparound). Цей метод згодом (після появизахищеного режиму) назвалиреальним режимом адресації процесора, такий режим дозволяє адресувати до 1 Мбайт пам'яті.
Старші 4 біт адреси виводяться на окремі контакти корпусу, а молодші 16 виводяться на поєднану шину адреси-даних. Для того, щоб адресувати потрібний сегмент використовуються 16-бітові сегментні регістри, значення яких зсувається на 4 біта вгору і складається з вказівним 16-бітовим регістром. Отримане значення — 20 бітова адреса пам'яті або пристрою виводиться на контакти.
Таким чином, пам'ять розділяється на сегменти, розміром 64 Кбайт кожен і починаються з адреси, кратної 16 (межа параграфа); пам'ять в 1 Мбайт розділялася, таким чином, на 16 сегментів. Ці 16 сегментів називають сторінками пам'яті. У комп'ютері, подібному IBM PC, останні 6 сторінок (A, B, C, D, E, F) пам'яті (т. зв. верхня пам'ять —англ.upper memory) використовувалися для відеопам'яті і BIOS-а, це обмежувало пам'ять, доступну користувачеві, об'ємом в 640 Кбайт (т. зв. звичайна пам'ять —англ.conventional memory; сторінки 0~9).
На той час такий режим адресації забезпечував багато переваг: ємність пам'яті могла складати до 1 Мбайт, хоча команди оперували 16-бітовими адресами; спрощувалося використання окремих областей пам'яті для програми, її даних і стеку; спрощувалася розробка пристроїв, сумісних один з одним.
Система команд процесора i8086 складається з 98 команд (і більше 3800 їх варіацій): 19 команд передавання даних, 38 команд їх обробки, 24 команди переходу і 17 команд управління процесором. Можливі 7 режимів адресації. Мікропроцесор не мав команд для обробкичисел із рухомою комою. Ця можливість реалізовувалася окремою мікросхемою —математичним співпроцесором, який встановлювався на материнській платі. Співпроцесор не обов'язково мав бути Intel (модельi8087) — деякі виробники мікросхем, такі як Weitek, випускали продуктивніші співпроцесори.
Система команд процесора i8086 містить декілька потужних рядкових інструкцій. Якщо інструкція має префікс REP (повтор), то процесор виконуватиме операції з блоками — переміщення блоку даних, порівняння блоків даних, присвоєння певного значення блоку даних певної величини, і так далі, тобто, одна інструкція 8086 з префіксом REP може виконувати 4-5 інструкцій, що виконуються на деяких інших процесорах. Подібні прийоми були реалізовані й в інших процесорах-конкурентах — Zilog Z80 мав інструкції переміщення й пошуку блоків, а Motorola 68000 могла виконувати операції з блоками, використовуючи всього дві команди.
У мікропроцесорі i8086 була застосована примітивна формаконвеєра обробки команд. Блок інтерфейсу з шиною подавав потік команд до виконавчого пристрою через 6-байтову чергу. Таким чином, виконання однієї команди та завантаження наступних могло відбуватися одночасно. Це значно збільшувало пропускну спроможність процесора і позбавляло необхідності чекати зчитування команди з пам'яті при зайнятому іншими операціями інтерфейсі мікросхеми (у ті часи швидкість пам'яті значно випереджала швидкість цього процесора).
Мікропроцесор застосовувався вMycron 2000 — першому комерційному мікрокомп'ютері на базі i8086. На i8086 побудовано машину для обробки текстівIBM Displaywriter,Compaq DeskPro іWang Professional Computer.[4]
Однак застосування процесора i8086 уперсональних комп'ютерах було дуже обмеженим через дорожнечу (а подекуди й відсутність) спеціалізованих мікросхем, які були потрібні для збирання комп'ютера. До того ж мікросхеми динамічної оперативної пам'яті у 70-і роки мали 1-бітову організацію й для 8-бітової системи було потрібно 8 мікросхем пам'яті, а для 16-бітової — 16.
Це зрозуміли в Intel і для здешевлення й зменшення розмірівдрукованих плат комп'ютера, було вирішено розробити варіант процесора з 8-бітовою шиною даних, який був би повністю сумісним на програмному рівні. Ним став процесорIntel 8088, який компанія випустила 1979 року.
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-25) +ЕА - в операціях пам'яті
Множення без знака: 70-118 (реєстрація), (76-139) +EA - в операціях пам'яті
Множення ознак: 80-154 (реєстрація), (86–160) +ЕА – під час операцій пам’яті
Підрозділ без знака: 80–162 (реєстр), (86–168) +ЕА – в операціях пам’яті
Значний поділ: 101-184 (реєстрація), (107-1990) +ЕА - в операціях пам'яті
Передача даних: 2 (між реєстрами), (8-14) +EA - в операціях пам'яті