Intel 8086 — процессор, открывший эпоху
История создания легенды
Сегодня, в 2018 году, мы отмечаем сорокалетие, пожалуй, ключевого в истории персональных компьютеров процессора, а именно – Intel 8086.
Именно с него началась эпоха архитектуры x86, заложившей основы развития процессоров на многие годы и десятилетия вперед, именно ему мы обязаны взлету популярности компьютера как индивидуальной единицы, доступной каждому пользователю. В честь 40-летнего юбилея процессора, с которого началось превращение Intel в многомиллиардную корпорацию, компания представила небольшой символический подарок своим поклонникам — им стал юбилейный i7-8086K, первым процессором в истории Intel, способным работать на частоте 5 ГГц прямо из коробки.
Но сегодня мы не будем петь дифирамбы инженерам современных процессоров-лидеров, а вернемся в далекое прошлое, в 1976 год, где и началась история Intel 8086. И началась она с совершенно другого процессора.
В 1976 году компания Intel поставила перед своими инженерами серьезную задачу – создать первый в мире микропроцессор, поддерживающий работу в формате многозадачности, а также обладающий встроенным в чип контроллером памяти. Сейчас эти технологические особенности можно без труда обнаружить даже в самых доступных процессорах на рынке, но 42 года назад подобные технологические новшества обещали перегнать целую эпоху – Intel планировала перейти на 32-битные вычисления в тот момент, когда господствовали 8-битные системы, и даже 16-бит были очень далеко. К сожалению, или к счастью, амбиции руководителей Intel столкнулись с суровой реальностью в виде нескольких переносов сроков, технологическими проблемами и осознанием того, что технологии 1976 года еще не шагнули так далеко, чтобы воплотить в жизнь такие смелые задумки. А главное – Intel настолько увлеклась созданием, как сказали бы на западе, over-engineered архитектуры, что упустила из виду практичность с точки зрения программного обеспечения. Именно непрактичность и нарочитую усложненность системы раскритиковал на одном из совещаний приглашенный эксперт по имени Стивен Морс – 36-летний инженер микроэлектроники, специализирующийся тогда на программном обеспечении. Тем не менее, Intel не торопилась учитывать критические замечания, поэтому заметки Морса отправились в долгий ящик.
Но как оказалось позже, они были крайне полезными – уже в июле 1976 года небольшая компания Zilog, основанная изобретателем Intel 4004 и Intel 8008 Федерико Фаджином, а также менеджером Intel Ральфом Унгерманном и еще одним разработчиком 4004, японцем Масатоси Сима, представила на рынке свой процессор Z-80, ставший фактической работой над ошибками на базе Intel 8080.
Усовершенствовав архитектуру оригинального процессора Intel, команда Zilog предложила недорогой и производительный процессор, сразу же полюбившийся многим производителям техники и ведущих платформ того времени. Именно Z-80 лег в основу легендарного ZX Spectrum, а также был установлен в не менее известный Commodore 128 в качестве сопроцессора. Z-80 стал невероятно успешным во многих уголках мира, и этот успех не мог остаться незамеченным – в Intel срочно решили, что Z-80 нужен достойный конкурент.
Именно здесь руководители компании вспомнили о замечаниях Стивена Морса, и предложили тому возглавить создание принципиально нового процессора, призванного составить конкуренцию новинке от Zilog. Intel не видели особенных причин задавать рамки в этом проекте – тогда всем казалось, что новый процессор будет быстрым ответом на Z-80, и забудется в течение следующих лет, поэтому Морс получил зеленый свет на любые эксперименты. Именно навязчивая мысль о том, что процессор должен строиться вокруг эффективности работы с ПО, как выяснилось позже, стала ключевой для развития всей индустрии.
В мае 1976 года Стив Морс приступил к работе над архитектурой нового процессора. В сущности, задача, поставленная перед Морсом, была проста. Если новый 16-битный чип должен давать значительное увеличение скорости по сравнению с 8-битным 8080-м, он должен отличаться по ряду параметров. Но Intel хотела добиться, чтобы потребители обращались к ней повторно. Как один из способов добиться этого рассматривалась возможность перевода на более высокий уровень системы, разработанной для менее мощного процессора, при замене которого новым она будет работать. Для этого, в идеале, новый процессор должен быть совместим с любой программой, написанной для 8080.
Морсу приходилось отталкиваться от проекта 8080, в соответствии с которым процессор назначал «адрес» каждому месту, где хранились числа, подобно ярлыкам классификатора. Адреса представляли собой 16-битные двоичные числа, что позволяло обозначить 65536 различных адресов. Этот потолок был приемлем, когда разработчикам требовалось экономно использовать память. Однако теперь потребителям понадобился больший объем, они настаивали на преодолении барьера в 64 Кбайт.
В июле 1978 года новый процессор, получивший название Intel 8086, появился на рынке.
Его выход не стал фурором или невероятным успехом. Впервые процессор попал на прилавки в составе нескольких бюджетных компьютеров, не пользующихся популярностью, а также использовался в различных терминалах. Чуть позже он лег в основу микроконтроллера NASA, где использовался для контроля над диагностическими системами ракетного пуска вплоть до начала 2000-х годов.
Морс покинул Intel в 1979 году, как раз перед тем, как компания представила Intel 8088, — практически идентичный 8086 микропроцессор, обеспечивавший совместимость с 8-битными системами через деление 16-битной шины на два цикла. Сам Морс назвал этот процессор «кастрированной» версией 8086.
Легендарный статус 8088 получил позже, когда в 1980 году IBM впервые задумалась о покорении рынка персональных компьютеров и создании компьютера, который был бы достаточно недорогим, и включал в себя комплектующие среднего класса. Именно IBM 5150, более известный под брендом IBM PC, и получил в основу процессор 8088 (по сути, все тот же 8086), благодаря чему Intel стала широко известной даже в кругах рядовых пользователей. А ведь на место 8088 претендовала и Motorola 68000 (основа первого Apple Macintosh), но руководство IBM отдала предпочтение Intel.
IBM PC быстро превратился в главную силу на рынке компьютерных систем, и Intel, следуя логике «дальше-лучше», продолжила выпускать процессоры – 80186, 80286, 80386, 80486, Pentium и так далее – на базе все той же основы Стивена Морса, заложенной им еще в 8086. Именно благодаря двум последним цифрам архитектура стала известна как «х86», а невероятная популярность компьютеров IBM обеспечила Intel огромные прибыли и узнаваемость в качестве бренда.
Архитектурные особенности 8086
В плане архитектурных особенностей Intel 8086 во многом опирался на опыт разработки процессора 8080, и его усовершенствованного собрата 8085, вышедшего на рынок летом 1976 года. Несмотря на некоторые параллели, 8086 стал первым 16-битным процессором компании, располагавшим 16 каналами данных и 20 адресными каналами, способными обрабатывать до 1 Мб данных, а также имел широкий набор инструкций, позволявших, среди всего прочего, проводить операции деления/умножения. Особенностью работы 8086 было наличие двух режимов – Минимального и Максимального, последний из которых предполагал использование процессора в системе с несколькими процессорами, а первый – в классических системах с одним процессором.
В Intel 8086 впервые появилась очередь инструкций, позволяющая хранить до шести байт инструкций напрямую из памяти, значительно сокращая время на их обработку. 16-битная природа процессора не была основана лишь на нескольких компонентах, ведь 8086 составляли 16-битный ALU, 16-битные регистры, а также внутренняя и внешняя шина данных, обрабатывающие данные по 16-битным инструкциям, благодаря чему система работала значительно быстрее, чем с более ранними процессорами Intel.
Конечно, из-за такого масштабного набора инноваций 8086 был значительно дороже предшественника, но и в подобном ключе у потребителя был выбор — Intel предлагала купить новинку в нескольких вариантах, зависевших от частот процессора – они варьировались от 5 до 10 МГц.
С точки зрения архитектуры микропроцессор Intel 8086 состоял из двух аппаратных модулей – модуля выполнения и модуля интерфейса шины. Модуль выполнения указывал модулю интерфейса шины, откуда получать данные инструкций, а после этого приступал к их подготовке и выполнению. Его суть сводилась к управлению данными с помощью декодера инструкций и блока ALU, при этом сам модуль не имел прямого соединения с шинами данных, и работал исключительно через модуль интерфейса шины.
Модуль выполнения содержал блок АЛУ, предназначенный для выполнения логических и арифметических операций, таких как умножение, деление, сложение, вычитание или операции по типу OR, AND и NOT. Также здесь был 16-битный регистр флагов, хранивший различные состояния операций в аккумуляторе – всего их было 9, 6 из которых были флагами состояния, а 3 являлись системными флагами, отражающими статус работы устройства.
К первым относились: флаг переноса, флаг четности, вспомогательный флаг переноса, флаг нуля, флаг знака и флаг переполнения. К системным флагам относились: флаг трассировки, флаг разрешения прерываний, а также флаг направления.
Помимо флагов модуль выполнения операций содержал 8 регистров общего назначения, которые использовались для передачи данных через шину в 16 бит. При этом сохранялась совместимость с предыдущим поколением программного обеспечения для 8-битных систем, потому что регистры общего назначения (AX, BX, CX, DX) могли работать как в режиме 16-битной шины, так и в режиме считывания данных с младших (AL, BL, CL, DL) и старших (AH, BH, CH, DH) регистров одновременно, обеспечивая двухканальную работу в формате 8-битной шины. Именно благодаря акценту на совместимость с предшествующими платформами с точки зрения программного обеспечения архитектура x86 стала ключевой и послужила основой для большинства последующих процессоров.
Наконец, последним из регистров в модуле стал 16-битный указательный регистр, который сохранял адрес сегмента данных в буфере памяти, необходимый для выполнения операции. Остальные функциональные части относились к соседнему модулю интерфейса шины.
Модуль интерфейса шины содержал в себе значительно больше функциональных компонентов – он отвечал на обработку всех данных и отправку инструкций в модуль выполнения, считывание адресов из памяти компьютера и информации со всех доступных портов ввода-вывода, а также за запись данных в доступную память и через вышеуказанные порты. Из-за того, что модуль выполнения не имел прямого соединения с модулем интерфейса шины, взаимодействие блоков происходило посредством внутренней шины данных.
В данном модуле содержится одна из ключевых архитектурных особенностей процессора 8086 – очередь инструкций. Модуль интерфейса шины включает очередь инструкций, способную хранить до 6 байт инструкций в буфере, отсылая новые инструкции по конвейеру после того, как от модуля выполнения поступит соответствующий запрос. Термин pipelining появился именно с выходом на рынок процессора 8086, так как он означает подготовку следующей инструкции в момент, когда предыдущая находится в процессе выполнения.
Здесь же располагается 4 сегментных регистра, отвечающих за буферизацию адресов инструкций и сопутствующих им данных в памяти компьютера, и тем самым обеспечивающих доступ к нужным сегментам центральному процессору. В регистре также содержится указатель команды (IP), содержащий адрес следующей инструкции, предназначенной для модуля выполнения.
Наконец, последним из регистров является 16-битный указатель команды, содержащий адрес следующей для выполнения инструкции.
Intel 8086 стал первым 16-битным процессором компании, доступном в 40-контактном DIP (ди ай пи) корпусе, который наряду со множеством прочих особенностей, стал одним из стандартов в микроэлектронике последующих лет.
Влияние и наследие
Стивен Морс, создавая концепцию небольшого «дочернего» процессора в стенах Intel, едва ли мог предположить, что находится на пороге создания исторического микропроцессора. Выход Intel 8086 был скромным и неоднозначным, однако его младший брат 8088 обрел славу в составе IBM PC/XT, позволив компании Intel обрести известность и получить колоссальную прибыль.
Архитектура х86 легла в основу всех дальнейших процессоров Intel, осознавшей удобство и универсальность концепции Морса «сначала ПО — потом начинка». Каждый следующий процессор строился на фундаменте предыдущего, обрастая новыми технологиями, инструкциями и блоками, но по своей сути немногим отличался от 8086.
И даже сегодня, глядя на i7 8086K, нужно понимать, что где-то глубоко внутри него еще находятся корни того самого процессора, увидевшего свет 40 лет назад, ознаменовавшего открытие эпохи х86.
Intel 8086
> Центральный процессор | |
Микропроцессор Intel 8086 | |
Производство: | 8 июня1978 |
Производители:
| |
Частота ЦП: | 4—10 МГц |
Технология производства: | HMOS, CHMOS, 3 мкм |
Наборы инструкций: | x86 |
Разъём: | DIP40, QFP56, PLCC44 |
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.
Содержание
История
Предшественники
В 1972 году Intel выпустила 8008, первый 8-битный микропроцессор. Он использовал набор инструкций, разработанный корпорацией Datapoint для программируемых компьютерных терминалов, пригодный и для универсальных процессоров. Этот процессор требовал нескольких дополнительных микросхем для использования в полноценном компьютере, отчасти потому, что использовал маленький 18-пиновый корпус от микросхем DRAM, производимых Интел, и соответственно не мог иметь отдельную шину адресов.
Двумя годами позже, в 1974, был запущен 8080, в новом, 40-пиновом DIP-корпусе, первоначально разработанном для микросхем калькуляторов. Он имел отдельную шину адресов и расширенный набор инструкций, кодово- (не бинарно-) совместимый с 8008, дополненный для удобства программирования несколькими 16-битными инструкциями. Процессор i8080 часто называют первым по-настоящему удобным и полезным микропроцессором. В 1977 году он был заменён на i8085, с одним питающим напряжением (+5В) вместо трёх различных на предшественнике и несколькими другими усовершенствованиями. Наиболее известными соперниками были 8-битные Motorola 6800 (1974), Microchip PIC16X (1975) (здесь наверное имеется ввиду процессор CP1600 фирмы General Instrument, который является предком микроконтроллеров Microchip http://en.wikipedia.org/wiki/PIC_microcontroller#History), MOS Technology 6502 (1975), Zilog Z80 (1976), и Motorola 6809 (1978).
Разработка
Проект 8086 был начат в мае 1976 года, и первоначально задумывался как временная замена для амбициозного и задерживающегося проекта iAPX 432 (также известного как 8800). Это была попытка, с одной стороны, противостоять менее запаздывавшим 16-ти и 32-битными процессорам других производителей (таких как Motorola, Zilog и National Semiconductor), а с другой — борьбы с угрозой от Zilog Z80 (разработанного командой под руководством ушедшего из Интел Фредерико Фаджин), который стал очень успешным. Первая версия архитектуры 8086 (система команд, прерывания, работа с памятью и вводом/выводом) была разработана с середины мая до середины августа Стивеном Морзе. Потом команда разработчиков была увеличена до четырёх человек, которые представили два основных проектных документа — 8086 Architectural Specifications и 8086 Device Specifications. При разработке не использовалось специализированных CAD-программ, а диаграммы были исполнены из текстовых символов. Использовались уже опробованные элементы микроархитектуры и физической реализации, в основном от i8085.
Описание
Рынок 8-разрядных микропроцессоров в конце 1970-х был переполнен, и Intel оставляет попытки на нём закрепиться и выпускает свой первый 16-битный процессор. Процессор i8086 представляет собой модернизированный процессор i8080 и, хотя, разработчики не ставили перед собой цель достичь полной совместимости на программном уровне, большинство программ написанных для i8080 способны выполняться и на i8086 после перекомпиляции. Новый процессор несёт в себе множество изменений, которые позволили значительно (в 10 раз) увеличить производительность по сравнению с предыдущим поколением процессоров компании.
Регистры
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Регистры 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-разрядное ПО, но сохраняло совместимость и со старыми программами (правда, их необходимо было, по крайней мере, перекомпилировать).
Размер шины адреса был увеличен с 16 бит до 20 бит, что позволило адресовать 1 Мбайт (2 20 байт) памяти. Шина данных была 16-разрядной. Однако в микропроцессоре шина данных и шина адреса использовали одни и те же контакты на корпусе. Это привело к тому, что нельзя одновременно подавать на системную шину адреса и данные. Мультиплексирование адресов и данных во времени сокращает число контактов корпуса до 40, но и замедляет скорость передачи данных.
Работа с памятью
1-й вариант. Для того чтобы адресовать больший, чем i8080, объём памяти, потребовалось изменить способ адресации памяти. Ведь если использовать старые методы, когда адрес к ячейке памяти содержался в указательных регистрах, то пришлось бы увеличивать размер этих самых регистров, чтобы иметь возможность обращаться к большему объёму памяти. Поэтому для адресации 1 Мбайт памяти применили следующую схему. На шину адреса подавался физический адрес размером 20 бит, который формировался путём сложения содержимого одного из сегментных регистров (16 бит), умноженного на 16, с содержимым указательного регистра: таким образом, адресация ячейки памяти производилась по номеру сегмента и эффективному адресу ячейки в сегменте (называемому также смещением). Если результат сложения оказывался больше, чем 2 20 -1, то 21-й бит отбрасывался; такая процедура называется «заворачиванием» адреса (англ. address wraparound ). Этот метод впоследствии (после появления защищённого режима) назвали реальным режимом адресации процессора, такой режим позволяет адресовать до 1 Мбайт памяти.
2-й вариант. Для того чтобы адресовать 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
На то время такой режим адресации обеспечивал множество преимуществ: ёмкость памяти могла составлять до 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-байтовую очередь команд. Таким образом, выборка и выполнение новых команд могли происходить одновременно. Это значительно увеличивало пропускную способность процессора и лишало необходимости считывать команды из медленной памяти.
Микрокомпьютеры на основе 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.
Технические характеристики
- Дата анонса: 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 байт
Источник