Intel 8086
Intel 8086 (також відомий як iAPX86, i86) — перший 16-бітний мікропроцесор компанії Intel, що розроблявся з весни 1976 року і був випущений 8 червня 1978.[1] Процесор мав набір команд, який застосовується і в сучасних процесорах, саме від нього бере свій початок відома на сьогодні архітектура x86.
Роки виробництва: | з 1978 по 1990-ті роки |
---|---|
Розробник: | Intel |
Виробник(и): | Intel |
Макс. частота CPU: | 5 MHz – 10 MHz |
Техпроцес: | 3 мкм |
Набір команд: | x86-16 |
Попередник: | (8080) |
Наступник: | 80186 |
Корпус(и): |
|
Варіант(и): | 8088 |
Основними конкурентами мікропроцесора 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 році Інтел випустила 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.
Опис
Регістри процесора Intel 8086 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Ринок 8-розрядних мікропроцесорів в кінці 1970-х був переповнений, і Intel залишає спроби на ньому закріпитися та випускає свій перший 16-бітний процесор. Процесор i8086 являє собою модернізований процесор i8080 і, хоча, розробники не ставили перед собою мету досягти повної сумісності на програмному рівні, більшість програм написаних для i8080 здатні виконуватися і на i8086 після перекомпіляції. Новий процесор несе у собі безліч змін, які дозволили значно (в 10 разів) збільшити продуктивність у порівнянні з попереднім поколінням процесорів компанії.
Регістри
Всього в процесорі 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, але й уповільнює швидкість передавання даних.
Робота з пам'яттю
Для того, щоб адресувати більший, ніж і8080, обсяг пам'яті, треба було змінити спосіб адресації пам'яті. Адже якщо використовувати старі методи, коли адресу до комірки пам'яті містився у вказівних регістрах, то довелося б збільшувати розмір тих самих регістрів, щоб мати можливість звертатися до більшого обсягу пам'яті. Тому для адресації 1 Мбайт пам'яті застосовували наступну схему. На шину адреси подавалася фізична адреса розміром 20 біт, яка формувалася шляхом складання вмісту одного із сегментних регістрів (16 біт), помноженого на 24, з вмістом вказівного регістра: таким чином, адресація комірки пам'яті вироблялася за номером сегмента і ефективною адресою комірки в сегменті (яка також називається зсувом). Якщо результат додавання виявлявся більше ніж 220 -1, то 21-ий біт відкидався; така процедура називається «загортанням» адреси (англ. adress wraparound). Цей метод згодом (після появи захищеного режиму) назвали реальним режимом адресації процесора, такий режим дозволяє адресувати до 1 Мбайт пам'яті.
Для того, щоб адресувати 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) пам'яті (т. зв. верхня пам'ять — англ. upper memory) використовувалися для відеопам'яті і BIOS-а, це обмежувало пам'ять, доступну користувачеві, об'ємом в 640 Кбайт (т. зв. звичайна пам'ять — англ. conventional memory; сторінки 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-байтову чергу команд. Таким чином, вибірка та виконання нових команд могли відбуватися одночасно. Це значно збільшувало пропускну спроможність процесора і позбавляло необхідності чекати зчитування команди з пам'яті при зайнятому іншими операціями інтерфейсі мікросхеми (у той час швидкість пам'яті значно випереджала швидкість цього процесора).
Периферійні пристрої
Intel 8237 | Контролер прямого доступу до пам'яті |
Intel 8251 | USART |
Intel 8253 | Програмований інтервальний таймер |
Intel 8255 | Програмований периферійний інтерфейс |
Intel 8259 | Програмований контролер переривань |
Intel 8279 | Контролер клавіатури/дисплея |
Intel 8282/8283 | 8-Bit latch |
Intel 8284 | Тактовий генератор |
Intel 8286/8287 | Двонаправлений 8-бітний драйвер |
Intel 8288 | Контролер шини |
Intel 8289 | Арбітр шини |
Мікрокомп'ютери на основі і8086
У персональних комп'ютерах процесор i8086 практично не використовувався через дорожнечу спеціалізованих мікросхем, які були потрібні для роботи процесора. Це зрозуміли і в Intel, в 1979 році вона випускає процесор i8088, у якого шина даних була 8-бітовою.
Через брак (ще не були розроблені) допоміжних 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 Мбайт
- Адресний простір вводу/виводу: 64 Кбайт
- Кількість транзисторів: 29 000
- Техпроцес (нм): 3000 (3 мкм)
- Площа кристала (кв. мм): ~ 30 (за іншими даними, 16 мм ²)
- Максимальне тепловиділення: 1,75 Вт
- Напруга живлення: +5 В
- Корпус: 40-контактний керамічний чи пластиковий DIP, пізніше — 56-контактний QFP і 44-контактний PLCC
- Кількість інструкцій: 98
- Черга команд: 6 байт
Примітки
- Microprocessor Hall of Fame. Intel. Архів оригіналу за 6 липня 2007. Процитовано 11 серпня 2007.