Intel 8086

Intel 8086
Роки виробництва:з 1978 по 1990-ті роки
Розробник:Intel
Виробник(и):Intel
Макс. частота CPU:5 MHz – 10 MHz
Техпроцес:3 мкм
Набір команд:x86-16
Попередник:(8080)
Наступник:80186
Корпус(и):
Варіант(и):8088

Intel 8086 (також відомий як iAPX86, i86) — перший 16-бітний мікропроцесор компанії Intel, що розроблявся з весни 1976 року і був випущений 8 червня 1978.[1] Процесор мав набір команд, який застосовується і в сучасних процесорах, саме від нього бере свій початок відома на сьогодні архітектура 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 році Інтел випустила 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
Регістри загального призначення
  AH AL AX (primary accumulator)
  BH BL BX (base, accumulator)
  CH CL CX (counter, accumulator)
  DH DL DX (accumulator, other functions)
Індексні регістри
0 0 0 0 SI Source Index
0 0 0 0 DI Destination Index
0 0 0 0 BP Base Pointer
0 0 0 0 SP Stack Pointer
Покажчик команд
0 0 0 0 IP Instruction Pointer
Сегментні регістри
CS 0 0 0 0 Code Segment
DS 0 0 0 0 Data Segment
ES 0 0 0 0 ExtraSegment
SS 0 0 0 0 Stack Segment
Регістр стану
  - - - - O D I T S Z - A - P - C Прапори

Ринок 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 Мбайт пам'яті.

Старші 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-байтову чергу. Таким чином, виконання однієї команди та завантаження наступних могло відбуватися одночасно. Це значно збільшувало пропускну спроможність процесора і позбавляло необхідності чекати зчитування команди з пам'яті при зайнятому іншими операціями інтерфейсі мікросхеми (у ті часи швидкість пам'яті значно випереджала швидкість цього процесора).

Периферійні пристрої

[ред. | ред. код]
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

[ред. | ред. код]

Мікропроцесор застосовувався в Mycron 2000 — першому комерційному мікрокомп'ютері на базі i8086. На i8086 побудовано машину для обробки текстів IBM Displaywriter, Compaq DeskPro і Wang Professional Computer.

Однак застосування процесора i8086 у персональних комп'ютерах було дуже обмеженим через дорожнечу (а подекуди й відсутність) спеціалізованих мікросхем, які були потрібні для збирання комп'ютера. До того ж мікросхеми динамічної оперативної пам'яті у 70-і роки мали 1-бітову організацію й для 8-бітової системи було потрібно 8 мікросхем пам'яті, а для 16-бітової — 16.

Це зрозуміли в Intel і для здешевлення й зменшення розмірів друкованих плат комп'ютера, було вирішено розробити варіант процесора з 8-бітовою шиною даних, який був би повністю сумісним на програмному рівні. Ним став процесор Intel 8088, який компанія випустила 1979 року.

Технічні характеристики

[ред. | ред. код]
  • Дата анонсу: 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 байт

Примітки

[ред. | ред. код]
  1. Microprocessor Hall of Fame. Intel. Архів оригіналу за 6 липня 2007. Процитовано 11 серпня 2007.

Посилання

[ред. | ред. код]