Блоґ одного кібера

Історія хвороби контуженого інформаційним вибухом

Історія процесорів x86.

with 4 comments


В 1968 році Роберт Нойс, винахідник кремнієвої інтегральної схеми, Гордон Мур, автор відомого закону Мура, і Артур Рок, капіталіст, заснували корпорацію Intel для виробництва комп’ютерних мікросхем.

У вересні 1989 японська фірма Busicom звернулась до Intel з проханням випустити 12 несерійних мікросхем для ЕОМ. Інженер компанії Intel Тед Хофф, якого призначили виконувати цей проект, подумав, що можна помістити цей процесор на одну мікросхему, яка буде виконувати такі ж функції і при цьому буде набагато простіша і дешевша. Так в 1970 з’явився перший процесор на одній мікросхемі названий 4004. Він мав 2300 транзисторів.

Варто зауважити, що ні Intel, ні Busicom не мали ані найменшого поняття, про те, яке грандіозне відкриття вони здійснили. Коли Intel вирішила, що варто спробувати 4004 в інших розробках, вони вирішили купити всі права на нову мікросхему в Busicom, за $60000, тобто за суму, яку Busicom заплатила Intel, за розробку цієї мікросхеми. Busicom одразу ж прийняла пропозицію Intel, і Intel почала роботу над 8-бітною версією мікросхеми. Назвали її 8008, вона була випущена в 1972.

Компанія Intel не очікувала великого попиту на мікросхему 8008, тому вона випустила невелику кількість цієї продукції. Проте, нова мікросхема зацікавила людей, тому Intel почала розробку ще одного процесора, в якому межа в 16Кб пам’яті (як в процесора 8008), нав’язана кількістю зовнішніх виводів мікросхеми була подолана. Так з’явився невеликий універсальний процесор 8080, випущений в 1974. Як і PDP-8, він здійснив революцію на комп’ютерному ринку, і одразу став масовим продуктом: тільки компанія DEC продала тисячі PDP-8, а Intel – мільйони процесорів 8080.

У 1978 році з’явився процесор 8086 – 16 бітний процесор на одній мікросхемі. Процесор 8086 був багато в чому схожий на 8080, але не був повністю сумісний з ним. Потім був випущений процесор 8088 з такою ж архітектурою як і в 8086. Він міг виконувати ті ж програми що і 8086, але замість 16-бітної шини в нього була 8-бітна, через що процесор працював повільніше, але коштував менше ніж 8086. Крім того з нього було легше зробити комп’ютер, бо більшість периферійних пристроїв були 8-бітні. Коли IBM вибрала 8088 для виробництва IBM PC, ця мікросхема стала еталоном в виробництві ПК.

Але ні 8088, ні 8086 не могли звертатися до пам’яті розміру більше 1Мб. До початку вісімдесятих років це стало серйозною проблемою, тому компанія Intel, розробила 80286 спільно з 8086. Основний набір команд залишився загалом таким самим як і в 8086, але пам’ять була сконструйована трохи інакше, хоч і могла працювати як і до того, через вимогу сумісності з попередніми версіями. Процесор 80268 використовувався в IBM PC/AT і в моделях PS/2. Він, як і 8088, користувався великим попитом (в основному через те, що його розглядали, як швидший 8088).

Наступним кроком був 32-бітний 80386, випущений в 1985 році. Як і 80286 він був більш-менш сумісним з старими версіями.

Через чотири роки з’явився процесор 80486. Він працював швидше ніж 80386, міг виконувати операції з плаваючою крапкою, і мав 8Кб кеш-пам’яті. 80486 містив конвеєр команд, і вбудовані засоби підтримки багатопроцесорного режиму, що давало змогу виробникам конструювати системи з кількома процесорами.

В той момент Intel, програвши судовий процес через порушення правил іменування товарів, дізналась, що номери (наприклад 80486) не можуть бути торговою маркою, тому наступне покоління комп’ютерів дістало назву Pentium (від грецького 5). На відміну від 80486, у якого був один вбудований конвеєр, Pentium, мав два, що дозволяло йому працювати майже в два рази швидше.

Коли з’явилось наступне покоління комп’ютерів, ті хто очікували на назву Sexium були розчаровані. Назва Pentium стала настільки відома, що його вирішили залишити, і нову мікросхему назвали Pentium Pro. Незважаючи на таку незначну зміну назви, цей процесор сильно відрізнявся від попереднього. Він мав суперскалярну архітектуру, і міг виконувати до п’яти команд одночасно. Крім того в нього була двохрівнева кеш-пам’ять. Процесор містив 8Кб пам’яті для часто використвовуваних даних, і ще 8Кб для часто використовуваних програм. Збоку від мікросхеми Pentium Pro, знаходилась мікросхема кеш-пам’яті друго рівня робміром 256Кб.

Після Pentium Pro з’явився процесор Pentium II, який відрізнявся від попередника тільки особливою системою команд для мультимедіа (MMX – multimedia extensions). Ці команди призначались для прискорення обчислень, необхідних при відтворенні зображень і звуку.

А далі вже навіть не історія, бо все решта відбувалося за нашої пам’яті.

Всі мікросхеми Intel сумісні з своїми попередниками аж до процесора 8086. Іншими словами ваш ПК (якщо в вас ПК, а не Mac чи ще щось) мав би вміти виконувати програми написані ще для 8086. (Хоча скоріше за все не виконає, але в цьому буде вина не тільки Intel). Сумісність завжди була одним з головних вимог при розробці нових комп’ютерів, щоб покупці не мали проблем з перенесенням програмного забезпечення. Звичайно Pentium набагато складніший ніж 8086, тому він може виконувати багато функцій які не міг виконувати 8086. Всі ці поступові розробки привели до того, що архітектура Pentium не така проста, ніж могла б бути, якщо б розробникам дали ті кілька мільйонів транзисторів, і сказали скласти новий процесор.

Назва Розрядність регістрів Розрядність шини Частота Кількість транзисторів Дата появи Крім того
4004 4 4 0.740 МГц 2300 15 листопада 1971 перший мікропроцесор
8008 8 8 0.5 МГц 3500 Квітень 1972
8080 8 16 2 МГц 6 000 Квітень 1974
8086 16 16 5 МГц 29 000 1978 сегментна модель
8088 16 8 4.77 МГц 29 000 1 липня 1979 урізаний х86
80286 16 24 12.5 МГц 134 000 1 лютого 1982 захищений режим
80386 32 32 33 МГц 1986

4004

Intel C4004

Intel C4004


Був випущений 15 листопада 1971 року. Знаходився в пластиковому корпусі з 16 виводами. Основними конструкторами були Фредеріко Фаджін і Тед Хофф з Intel, а також Масатоші Шіма з Busicom. 4004 вважається першим в світі мікропроцесором (до того процесори складалися з кількох мікросхем). Першим комерційним продуктом, випущеним на базі 4004 був калькулятор Busicom 141-PF.
Його максимальна частота 740 кГц. Дані і команди зберігаються окремо (т. н. Гарвардська архітектура). Правда на відміну від інших конструкцій Гарвардської архітектури, які використовували окремі шини, 4004 з його 16 виводами використовував одну, помножувану чотирьохрозрядну шину для передавання 12-розрядних адрес, 8-розрядних команд і 4-розрядних слів даних. Набір команд складав 46 різних команд (з яких 5 були довжиною 16 біт, всі решта 8 біт). Мав 16 чотирирозрядних регістрів. Внутрішній стек підпрограм мав три рівні. Корпус мав тип DIP (dual in-line)

8008

Intel 8008

Intel 8008


Випущений в квітні 1972, на замовлення Computer Terminal Corporation (CTC), для реалізації набору команд призначених для їхнього програмованого терміналу Datapoint 2200. Але так як розробка трохи затрималась, і чіп не відповідав вимогам CTC, то CTC обійшлась своїм власним процесором. Угода дозволяла Intel продавати чіп іншим клієнтам, тому згодом вони продали його Seiko, яка використала мікросхему в своєму калькуляторі.
Незважаючи на те, що процесор був повільнішим за 4004, якщо дивитись на частоту, але за рахунок того, що він оперував даними по 8 біт, що давало йому змогу адресувати більший об’єм памяті, і продуктивність загалом була вищою. 8008 мав 3500 транзисторів.

Процесор (обмежений своїм DIP корпусом на 18 виводів) мав одну 8-бітну шину, і вимагав значний об’єм зовнішньої логіки для підтримки фунціональності. Наприклад, щоб оперувати 14-розрядними адресами, потрібне було підключення зовнішньої мікросхеми Memory Address Register (MAR).

Як на якийсь контролер чи термінал ця конструкція була прийнятною, але вона була занадто складною для інших задач. Кілька ранніх комп’ютерів використовували 8008, але більшість використовували більш пізній 8080.

Конструкторами були все ті ж Фредеріко Фаджін і Тед Хофф.

8080

Intel C8080A

Intel C8080A


Автором архітектури 8080 був Фредеріко Фаджін. На початку 1972 він запропонував її керівництву Intel, і наполіг на реалізації. Через сім місяців, він нарешті дістав дозвіл її розробляти. Фаджін найняв Масатоші Шіму (автора архітектури 4004) з Японії. Одним словом його Intel випустила, без замовлення, хоча після випуску покупці з’явились.

Цей восьмирозрядний процесор випущений в квітні 1974, мав частоту 2 МГц, і загалом вважається першим справді корисним мікропроцесором. Процесор використовує той самий набір інструкцій що і 8008. Міститься в корпусі DIP на 40 виводів, тому мав доступ до 16-розрядної шини адрес, і 8-розрядної шини даних. Така велика шина даних дозволяла адресувати 64Кб пам’яті.

Мав сім 8-розрядних регістрів (A, B, C, D, E, H, L), де A був регістром акумулятором, а інші могли використовуватись нормально, або як 16-розрядні регістри (BC, DE, HL), залежно від інструкції. Деякі інструкції використовували HL, як акумулятор. Також був 16-розрядний вказівник стеку в пам’яті (замість внутрішнього стеку 8008 ) і 16-розрядний вказівник інструкції.

Через дуже правильний формат машинного коду для команди MOV, коди команд включали інструкції для переміщення з заданого регістру в нього ж самого (наприклад MOV A,A). Ця команда використовувалася рідко, крім тих випадків, коли було потрібно пригальмувати програму. А те що мало переміщати дані з пам’яті за адресою HL, в ту ж адресу, насправді було інструкцією HLT. HLT призупиняло процесор, до моменту перезавантаження, або отримання переривання.

Всі коди команд зберігалися в одному байті, але після деяких могли йти ще кілька байт даних, адреси пам’яті, чи номери портів. Команди переміщення регістр-регістр кодувались одним байтом і складали приблизно чверть команд всього набору. Також процесор мав вісім однобайтових команд для виклику підпрограм розміщених в фіксованих адресах 0000h, 0008h, 0010h, … 0038h (RST). Ці команди часто використовувались при обробці переривань, чи викликів в системну бібліотеку.

Найскладнішою командою (з найдовшим виконанням) була XTHL, яка використовувалась для заміни пари регістрів HL значенням, яке зберігалось на вершині стеку.

Хоча 8080 і був 8-розрядним він міг виконувати кілька 16-розрядних команд, які оперували з парами регістрів. Наприклад XCHNG, обмінювала значення в HL і DE.

8080 підтримував 256 портів вводу-виводу, доступ до яких проводився через інструкції, які отримували адресу порту, як операнд. Метод був обраний як такий, що звільняв, і так обмежений простір адрес комп’ютера. Тим не менш на деяких комп’ютерах, порти вводу-виводу адресувались так, ніби вони були в пам’яті, залишаючи ці команди невикористаними.

Для складніших систем процесор посилав на шину слово станів під час спеціальної фази в циклі роботи. Кожен біт відповідав за окремий стан, наприклад, іде доступ до пам’яті, чи до порту, чи потрібно обробляти переривання, і тому подібне. Стан переривання (дозволене чи не дозволене) мав для виводу додатковий штир (вивід). В комп’ютерах де переривання не використовувались, цей контакт, використовувався, як додатковий однобітовий вивід.

Один біт з слова станів, вказував на те, що процесор звертається до даних з стеку. Використовуючи цей сигнал можна реалізувати окремий розділ пам’яті для стеку. Проте ця властивість використовувалась рідко.

Процесор вимагав три джерела струму +5В, -5В, і +12В. Радянська версія КР580ВМ80А працювала і на одному джерелі +5В. Потужність процесора 1.3 Ват.

Процесор був використаний в багатьох мікрокомп’ютерах, зокрема в легендарному Altair 8800. Цей компютер був іскрою яка привела до революції персональних комп’ютерів. Набір для збирання коштував всього $439. Крім того можна було купити дві версії компілятора BASIC – першого продукту Microsoft (4Kb – 60$, 8Kb – 75$ продавалось на вагу 🙂 ).

8086

Intel 8086

Intel 8086


16-розрядний процесор сконструйований Intel і представлений ринку в 1978. Він дав початок архітектурі x86, з якою сьогодні сумісні більшість процесорів включаючи навіть такі новинки як Intel Core 2 Duo і АMD Athlon 64. Використовував ту саму мову ассемблера що і 8080 і 8008. Це було тому, що архітектура приблизно базувалася на архітектурі 8080.
Конструкція була розширена, щоб підтримувати повністю 16-розрядні обчислення, на відміну від досить посередніх можливостей 8080. Були додані нові типи інструкцій: самоповторювані операції і інструкції для кращої підтримки структурованих мов сім’ї Алгола (зокрема Паскаль, і хай всі хто його не люблять обламаються 🙂 ). Архітектура була описана Стівеном П. Морзе і Брюсом Равенелом. Пітер А. Столл був головним інженером команди розробників. Хоча 8086 менш відомий ніж 8088, спадок 8086 вічний. Згадки про нього можна знайти в середині майже кожного сучасного комп’ютера. Наприклад назви пізніших версій процесорів Intel закінчувались на 86.

Всі внутрішні регістри, а також зовнішня і внутрішня шина, були 16-бітні, затверджуючи за 8086 статус 16-бітного. Шина даних ділилася з шиною адрес, щоб вміщатися на 40 виводах корпусу DIP. Максимальні лінійні адреси обмежувались 64Кб, через 16-розрядність регістрів. Програмування звязку за кордон цих 64Кб вимагало зміни сегментних регістрів, і тому було досить неприємним (і залишалось таким до 80386).

8086 мав чотири 16-бітні регістри загального призначення (AX,BX,CX,DX), до яких також можна було звертатися як до восьми 8-бітових регістрів (AH,AL,BH,BL,CH,CL,DH,DL).
Крім того були тільки 16-бітні регістри (BP,SI,DI,SP).
І сегментні регістри (CS, DS, SS, ES, що значило “code segment”, “data segment”, “stack segment” і “extra segment”), що дозволяло процесору адресувати аж Мегабайт пам’яті.

Згідно з компактним кодуванням яке прийшло від 8-бітних процесорів, більшість інструкцій були одноадресні, або двоадресні, що означало що результат буде зберігатися в одному з операндів. Один з операндів міг бути в пам’яті, і міг бути також результатом, але коли один операнд в пам’яті – інший мав бути або регістром, або константою.

З’явились нові інструкції (наприклад push чи ret), які робили простішими виклики підпрограм. Вказівники в програмах для х86 поділились на два типи – близькі і далекі. Близькі просто містили 16-розрядну адресу. Далекі містили пару сегмент:офсет. Щоб не дописувати до кожного вказівника його дальність кожна програма діставала свою модель пам’яті, яка задавала комбінації дальності вказівників на код і дані.
Маленькі програми могли проігнорувати сегментну модель, і просто використати пряму 16-бітну адресацію. Що дало змогу старим програмам дуже просто переходити на 16-розрядні платформи. Це дало змогу авторам MS-DOS зробити АПІ дуже подібний до CP/M, так само як і файли .com ідентичні до таких же в CP/M.

Так як адреси і дані передавались по одній шині, то це трішки гальмувало програми. Переміщення даних наприклад відбувалося в 4 кроки. А так як інструкції мали довжину від одного до шести байт, тому витягування і виконання операції були зроблені паралельними. З модуля контролю шини інструкції передавалися в модуль виконання, через 6 байтову чергу попередньої вибірки команд. (форма конвеєра), прискорюючи операції над регістрами і константами, хоча операції з пам’яттю стали повільніші. Операції з пам’яттю виконуються так повільно через те що шина даних і адрес тіснилися на одній, а також не було пристрою для обчислення адреси (= сегмент*16+офсет) тому це обчисленння відбувалося в АЛП. (Через чотири роки це виправили в моделі 80186). Зате, тепер АЛП виконував операції над 16-розрядними даними за один цикл, що давало в порівнянні з попередніми версіями величезний.

Крім того 8086 міг бути підєднаний до математичного співпроцесора, щоб додати можливості обчислень з плаваючою крапкою. Intel 8087 був стандартним математичним співпроцесором, який оперував з 80-бітними числами, але виробники на зразок Weitek, скоро надали більш потужні альтернативи.

Клони цього процесора виробляли багато підприємств, наприклад Fujitsu, Harris/Intersil, OKI, Siemens AG, Texas Instruments, NEC, і AMD. Аналог мікросхеми існував також в СРСР, в основному завдяки промисловому шпигунству, і зворотньому проектуванню.

Всі процесори 8086 вироблені до 1982 мали кілька помилок з перериваннями. Потім IBM придумало вдосконалення. Процесори які мають оригінальне маркування 1979 року зараз дуже рідкісні, вони в основному знаходяться в колекціонерів.

8086 стояв на багатьох комп’ютерах, зокрема, Mycron 2000, IBM Displaywriter, Compaq Deskpro, і інших.

8088

Intel 8088

Intel 8088


Intel 8088 це процесор в основному аналогічний до 8086, тільки з зовнішньою шиною на 8 біт. Він міг адресувати до 1Мб пам’яті. Він був представлений 1 липня 1979 і був використаний в першому ПК від IBM.

8088 позиціонувався як економічне рішення, дозволяючи конструкції з восьмибітними шинами. Плати з великими шинами були досить дорогі в кінці сімдесятих. Черга вибірки команд мала 4 байти, на відміну від 6 байтової в 8086 і алгоритм вибірки був злегка модифікований, щоб відповідати вужчій шині.

80286

Intel 80286

Intel 80286


Процесоро представлений 1 липня 1982 (в деяких інструкціях для програмістів називався iAPX 286) був 16-розрядним мікропроцесором на 134000 транзисторів. Він широко використовувався в IBM PC сумісних комп’ютерах, з середини вісімдесятих до початку дев’яностих. Процесор був сконструйований для багатопотокових додатків.

Після початкових випусків по 6 і 8 мегагерц, він був згодом розширений до 12.5 МГц (AMD і Harris пізніше натягнули цю архітектуру до 20 і 25 МГц відповідно). Продуктивність за кожен цикл роботи зросла більш ніж в два рази порівняно з 8086. Обчислення складних адрес виконувалося не в АЛП, а за допомогою спеціалього кола. Крім того складні математичні обчислення (такі як множення і ділення 🙂 ) були трохи оптимізовані, і використовували менше тактів.

За допомогою 24-розрядної адресної шини, процесор міг адресувати 16Мб пам’яті на відміну від межі в 1Мб в попередників. Цікавою властивістю, яка з’явилася в цього процесора був захищений режим (“protected mode”). Захищений режим дозволяв адресувати до 1 Гб логічного адресного простору через модуль управління пам’яттю, який знаходився всередині мікросхеми. Модуль управління пам’яттю також надавав деякий захист від програм, які хочуть писати за межі пам’яті, які їм виділені. Тим не менш, 286 не міг повернутися в реальний режим без перезавантаження. (хоча деякі дуже розумні програмісти знайшли спосіб повернутися в реальний режим, через послідовність інструкцій, які запускали перезавантаження, залишаючи пам’ять при свідомості. Контролер клавіатури Intel 8042 на IBM PC/AT мав функцію запуску м’якого перезавантаження “soft boot” яке зачіпало тільки ЦП.

80286 був першим спалахом з світу захисних механізмів, до того доступних тільки на мейнфреймах і мінікомп’ютерах, який проклав шлях для архітектури х86 вийти за рамки ПК, до потужніх серверів, і мейнфреймів.

На базі цього процесора працював IBM PC/AT

80386

Intel 80386

Intel 80386


Цей процесор випущений в 1986 також інакше називався i386, і був 32-розрядним. Його набір інструкцій, програмна модель, і коди команд, дотепер є спільною для всіх 32-бітних процесорів x86. Як такі, вони залишилися майже незмінними протягом більше 20 років. Частота залежала від реалізації і була десь 33 МГц.
В травні 2006 Intel заявила, що виробництво 386 процесора припиниться на до кінця 2007 ( 8 ). Хоча він і був вже довгий час застарілим як ЦП персонального комп’ютера, проте використовувався в деяких системах, на зразок аерокосмічних.
Мав три режими реальний, віртуальний і захищений.

Література

1. Танненбаум Архітектура комп’ютера
2. http://en.wikipedia.org/wiki/Intel_4004
3. http://en.wikipedia.org/wiki/Intel_8008
4. http://en.wikipedia.org/wiki/Intel_8080
5. http://en.wikipedia.org/wiki/Intel_8086
6. http://en.wikipedia.org/wiki/Intel_8088
7. http://en.wikipedia.org/wiki/80286
8. http://www.reghardware.co.uk/2006/05/18/intel_cans_386_486_960_cpus/

Written by bunyk

15 Лютого, 2009 at 00:23

Опубліковано в Всяке

Tagged with

Відповідей: 4

Subscribe to comments with RSS.

  1. В тексті є деякі помилки в датах) “У вересні 1989 японська” не в 89 а в 69, а так в загалому статья цікава

    Иван

    11 Січня, 2011 at 13:30

    • Ого, як пізно хтось помітив. Дякую. Це я написав коли ще був зовсім юний (два роки тому:)), і чомусь дуже цим захоплений 🙂

      bunyk

      11 Січня, 2011 at 14:03

      • Дякую! Ваша стаття дуже зручна, ані англійською ані російською я не знайшов 1) короткого переліку x86 процесорів з датами та функціональністю 2) відповіді на питання, чому замість 80586 була обрана назва Pentium. Навіть з Вікіпедіі це незрозуміло. Ще, на мою думку, дуже потрібна така ж інформація про наступні x86-процесори до knight landing (knl) включно у вигляді короткої таблиці – назва, дата, що нового. Якщо буде вільний час, зробіть, будь ласка! Це додасть переходів з пошуку у ваш блог :). Дякую ще раз!

        vovcat

        19 Червня, 2017 at 13:25

        • Ну, в мене вже навіть предмету “архітектура комп’ютера” нема. То був ще другий курс, і я вже нічого не пам’ятаю. 🙂

          bunyk

          20 Червня, 2017 at 15:08


Залишити коментар

Цей сайт використовує Akismet для зменшення спаму. Дізнайтеся, як обробляються ваші дані коментарів.