8086

Мікропроцесор 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.


1. Історія

1.1. Попередники

В 1972 Intel випустила 8008, перший 8-бітний мікропроцесор. Він використовував набір інструкцій, розроблений корпорацією Datapoint для програмувальних комп'ютерних терміналів, придатний і для універсальних процесорів. Цей процесор вимагав декількох додаткових мікросхем для використання в повноцінному комп'ютері, почасти тому, що використовував маленький 18-піновий корпус від мікросхем DRAM, вироблених Intel, і відповідно не міг мати окрему шину адрес.

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


1.2. Розробка

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


2. Опис

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


2.1. Регістри

Регістри загального призначення
AH AL AX (primary accumulator)
BH BL BX (base, accumulator)
CH CL CX (counter, accumulator)
DH DL DX (accumulator, other functions)
Індексні регістри
SI S ource I ndex
DI D estination I ndex
Вказівні регістри
BP B ase P ointer
SP S tack P ointer
Регістр стану
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 (Bit position)
- - - - O D I T S Z - A - P - C Прапори
Сегментні регістри
CS C ode S egment
DS D ata S egment
ES E xtra S egment
SS S tack S egment
Покажчик команди
IP I nstruction P ointer
Регістри 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-розрядне ПО, але зберігало сумісність і зі старими програмами (щоправда, їх необхідно було, принаймні, перекомпілювати).


2.2. Шини

Розмір шини адреси був збільшений з 16 біт до 20 біт, що дозволило адресувати 1 Мбайт (2 20 байт) пам'яті. Шина даних була 16-розрядної. Однак в мікропроцесорі шина даних і шина адреси використовували одні й ті ж контакти на корпусі. Це призвело до того, що не можна одночасно подавати на системну шину адреси і дані. Мультиплексування адрес і даних у часі скорочує число контактів корпусу до 20, але і уповільнює швидкість передачі даних.


2.3. Робота з пам'яттю

1-й варіант. Для того щоб адресувати більший, ніж i8080, обсяг пам'яті, треба було змінити спосіб адресації пам'яті. Адже якщо використовувати старі методи, коли адресу до комірки пам'яті містився в вказівних регістрах, то довелося б збільшувати розмір цих самих регістрів, щоб мати можливість звертатися до більшого обсягу пам'яті. Тому для адресації 1 Мбайт пам'яті застосували наступну схему. На шину адреси подавався фізичну адресу розміром 20 біт, який формувався шляхом складання вмісту одного із сегментних регістрів (16 біт), помноженого на 2 4, з вмістом вказівного регістра: таким чином, адресація комірки пам'яті вироблялася за номером сегмента і ефективному адресою комірки в сегменті (званому також зміщенням). Якщо результат додавання виявлявся більше, ніж 20 лютого -1, то 21-й біт відкидався; така процедура називається "загортанням" адреси ( англ. address wraparound ). Цей метод згодом (після появи захищеного режиму) назвали реальним режимом адресації процесора, такий режим дозволяє адресувати до 1 Мбайт пам'яті.

2-й варіант. Для того щоб адресувати 1 мегабайт пам'яті (20 біт адреси) з використанням 16-бітових регістрів використовується сегментування. Старші 4 біт адреси виводяться на окремі контакти корпусу, а молодші 16 виводяться на поєднану шину адреси-даних. Але межа сегмента не жорстка, а плаваюча. Для того щоб адресувати потрібний сегмент використовуються 16-бітові регістри сегмента, значення яких зсувається на 4 біта вгору і складається з вказівним 16-бітним регістром. Отримане значення - 20 бітна адреса пам'яті або пристрою виводиться на контакти. Якщо результат додавання виявлявся більше ніж 1 мегабайт, виводяться тільки молодші 20 біт адреси, 21-біт відкидається.

Схема, що показує роботу реального режиму адресації процесора Intel 8086 і вище

Таким чином, пам'ять поділяється на сегменти, розміром 64 Кбайт кожен і починаються з адреси, кратного 16 (кордон параграфа); пам'ять в 1 Мбайт поділялася, таким чином, на 16 сегментів. Ці 16 сегментів називають сторінками пам'яті. У комп'ютері, подібному IBM PC, останні 6 сторінок (A, B, C, D, E, F) пам'яті (т. зв. верхня пам'ять - англ. upper memory ) Використовувалися для відеопам'яті і BIOS -а, це обмежувало пам'ять, доступну користувачу, об'ємом в 640 Кбайт (т. зв. звичайна пам'ять - англ. conventional memory ; Сторінки 0 ~ 9).

На той час такий режим адресації забезпечував безліч переваг: ємність пам'яті могла становити до 1 Мбайт, хоча команди оперували 16-бітними адресами; спрощувалося використання окремих областей пам'яті для програми, її даних і стека; спрощувалася розробка пристроїв, сумісних один з одним.


2.4. Система команд

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

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

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


3. Мікрокомп'ютери на основі 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.


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

  • Дата анонсу: 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 байт