Interested Article - Intel 8086
- 2021-04-19
- 1
Intel 8086 (в 1980-85 годах известный как iAPX 86/10 ) — первый 16-битный микропроцессор компании Intel . Разрабатывался с весны 1976 года и выпущен 8 июня 1978 года . Реализованная в процессоре архитектура набора команд стала основой широко известной архитектуры x86 . Процессоры этой архитектуры стали наиболее успешной линией процессоров Intel. Современные процессоры этой архитектуры сохраняют возможность выполнять все команды этого набора.
Незначительно изменённая версия процессора с 8-битной шиной данных , выпущенная в 1979 году под названием Intel 8088 , применялась в персональных компьютерах IBM PC и IBM PC/XT .
История
Предшественники
В 1972 году Intel выпустила 8008 , первый 8-битный микропроцессор. Он использовал набор инструкций , разработанный корпорацией для программируемых компьютерных терминалов , пригодный и для универсальных процессоров. Этот процессор требовал нескольких дополнительных микросхем для использования в полноценном компьютере, отчасти потому, что использовал маленький корпус всего лишь с 18 выводами, который использовался для микросхем DRAM , производимых Intel, и соответственно не мог иметь отдельную шину адресов.
Двумя годами позже, в 1974 году, был запущен 8080 , в новом, 40-выводном DIP -корпусе, первоначально разработанном для микросхем калькуляторов . Он имел отдельную шину адресов и расширенный набор инструкций, кодово- (не бинарно-) совместимый с 8008, дополненный для удобства программирования несколькими 16-битными инструкциями. Процессор Intel 8080 часто называют первым по-настоящему удобным и полезным микропроцессором. В 1977 году он был заменён на Intel 8085 , с одним питающим напряжением (+5 В) вместо трёх различных на предшественнике и несколькими другими усовершенствованиями. Наиболее известными соперниками были 8-битные Motorola 6800 (1974), Microchip PIC 16X (1975) (здесь наверное имеется в виду процессор General Instrument CP1600 ), MOS Technology 6502 (1975), Zilog Z80 (1976) и Motorola 6809 (1978).
Разработка
Рынок 8-разрядных микропроцессоров в конце 1970-х годов был переполнен, и Intel, оставляя попытки закрепиться на нём, выпускает свой первый 16-битный процессор. Проект 8086 был начат в мае 1976 года и первоначально задумывался как временная замена для амбициозного и задерживающегося проекта iAPX 432 (также известного как 8800) [ источник не указан 2346 дней ] . Это была попытка, с одной стороны, противостоять менее запаздывавшим 16- и 32-битным процессорам других производителей (таких как Motorola, Zilog и National Semiconductor ), а с другой — борьбы с угрозой от Zilog Z80 (разработанного командой под руководством ушедшего из Интел Федерико Фаджина ), который стал очень успешным. Первая версия архитектуры 8086 (система команд, прерывания, работа с памятью и вводом-выводом) была разработана с середины мая до середины августа . Потом команда разработчиков была увеличена до четырёх человек, которые представили два основных проектных документа — «8086 Architectural Specifications» и «8086 Device Specifications». При разработке не использовалось специализированных CAD-программ , а диаграммы были исполнены из текстовых символов. Использовались уже опробованные элементы микроархитектуры и физической реализации, в основном от Intel 8085.
Описание
Процессор Intel 8086 представляет собой модернизированный процессор Intel 8080 , и хотя разработчики не ставили перед собой цели достичь полной совместимости на программном уровне, большинство программ, написанных для Intel 8080, способно выполняться и на Intel 8086 после перекомпиляции. Новый процессор несёт в себе множество изменений, которые позволили значительно (в 10 раз) увеличить производительность по сравнению с предыдущим поколением процессоров компании.
Регистры
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Регистры 8086 |
Всего в процессоре Intel 8086 имеется 14 16-разрядных регистров : 8 регистров общего назначения (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-разрядное ПО , но и сохранило обратную совместимость с 8-битными программами (правда, их необходимо было, по крайней мере, перекомпилировать ).
Шины
Размер шины адреса был увеличен с 16 бит до 20 бит, что позволило адресовать 1 Мбайт (2 20 байт) памяти. Шина данных была 16-разрядной. Однако в микропроцессоре шина данных и шина адреса использовали одни и те же контакты на корпусе. Это привело к тому, что нельзя одновременно подавать на системную шину адреса и данные. Мультиплексирование адресов и данных во времени позволяет использовать всего 20 контактов корпуса, но уменьшает скорость передачи данных. Из-за того, что выполнение отдельных команд меньше цикла ввода-вывода, в процессор был введён (впервые) буфер команд на 6 байт, это позволяло выполнять, например, команды сложения параллельно командам ввода-вывода.
Работа с памятью
Поскольку регистры и АЛУ процессора 8086 — 16-битные, это накладывает ограничение на операции вычисления адреса и его максимальный размер. Для вычисления адресов, превышающих 16 бит, понадобились бы расширение регистров и АЛУ и переработка системы команд, что, в свою очередь, привело бы к увеличению числа транзисторов, усложнению и удорожанию процессора.
Тем не менее, снижающиеся цены на память делали процессор выгодным для тех применений, где требовалась обработка больших объёмов данных. Расширение адресного пространства было одним из требований к новому процессору . В результате была выбрана компромиссная схема: исполнительный блок (EU) процессора оставлен 16-разрядным, а расширение адресного пространства сделано в блоке интерфейса шины (BIU) процессора путём реализации сегментной адресации памяти , увеличивающей разрядность шины адреса до 20 бит.
Сегментная адресация памяти использует тот факт, что обращения к памяти со стороны процессора легко можно разделить на обращения к коду программы, обрабатываемым данным и стеку . Обращения к разным типам содержимого памяти отображаются на независимые области памяти в расширенном адресном пространстве — сегменты . В процессоре 8086 для такого отображения адресов используются четыре 16-битных сегментных регистра:
- CS (Code Segment) — сегмент кода
- DS (Data Segment) — сегмент данных
- ES (Extra Segment) — дополнительный сегмент
- SS (Stack Segment) — сегмент стека
Каждый сегментный регистр определяет адрес начала сегмента в памяти, при этом сегменты могут совпадать или пересекаться. По умолчанию регистр CS используется при выборке инструкций, регистр SS — при выполнении операций со стеком, регистры DS и ES — при обращении к данным. В случае обращения к данным сегментный регистр по умолчанию может быть изменён путём добавления перед кодом инструкции специального префикса замены сегмента .
При этом в пределах сегмента используются 16-битные исполнительные адреса, хранящиеся в счётчике команд , указателе стека либо вычисляемые в соответствии с видом адресации , заданном в коде инструкции. Фактически, процессору всегда доступны 4 области памяти размером 64 Кбайт каждая. Если такой объём оказывается недостаточен, в программу приходится включать логику управления сегментными регистрами. Эта логика может существенно замедлять обращение к памяти, поэтому компиляторы с языков высокого уровня для платформы x86 позволяют указывать модель памяти в соответствии с требуемыми объёмами кода и данных.
Физический 20-битный адрес, позволяющий адресовать до 1 Мбайт памяти, получается путём сложения исполнительного адреса и значения сегментного регистра, умноженного на 16. Из-за наличия умножения на 16 сегмент всегда начинается на границе блока в 16 байт, называемого параграфом . Это может приводить к потере некоторого количества памяти, если размер используемых данных сегмента не кратен параграфу. В частности, это стало одной из причин, по которой разработчики отказались от реализации 24-битного адреса в 8086, так как размер параграфа при этом возрастал до 256 байт .
Возможное переполнение при вычислении физического адреса в процессоре 8086 игнорируется. Например, инструкция безусловного перехода по адресу 0010 16 при значении сегмента кода FFFF 16 выполнит переход по физическому адресу 0. Этого не происходит в старших моделях процессоров x86, например 80286, имевшем 24 адресных линии, поэтому в компьютерах IBM PC/AT для обеспечения совместимости был введён специальный вентиль Gate A20, принудительно обнуляющий бит А20 системной шины адреса.
Поскольку в старших моделях процессоров x86 были введены новые способы расширения адресного пространства, способ, используемый процессором 8086, был назван « режимом реальной адресации ».
Система команд
Система команд процессора Intel 8086 состоит из 98 команд (и более 3800 их вариаций): 19 команд передачи данных, 38 команд их обработки, 24 команд перехода и 17 команд управления процессором. Возможны 7 режимов адресации. Микропроцессор не содержит команд для работы с числами с плавающей запятой. Данная возможность реализована отдельной микросхемой, называемой математический сопроцессор , который устанавливается на материнской плате. Сопроцессор вовсе не обязательно должен был быть произведён Intel (модель Intel 8087 ), к примеру, некоторые производители микросхем, такие как , выпускали более производительные сопроцессоры, чем Intel.
Система команд процессора Intel 8086 включает в себя несколько очень мощных строковых инструкций. Если инструкция имеет префикс REP (от англ. repeat, повтор), то процессор будет выполнять операции с блоками — перемещение блока данных, сравнение блоков данных, присвоение определённого значения блоку данных определённой величины, и т. д., то есть, одна инструкция 8086 с префиксом REP может выполнять 4—5 инструкций, выполняемых на некоторых других процессорах. Подобные приёмы были реализованы и в других процессорах — Zilog Z80 имел инструкции перемещения и поиска блоков, а Motorola 68000 может выполнять операции с блоками, используя всего две команды.
В микропроцессоре Intel 8086 используется примитивная форма конвейерной обработки. Блок интерфейса с шиной подаёт поток команд к исполнительному устройству через 6- байтовую очередь команд. Таким образом, выборка и выполнение новых команд может происходить одновременно. Это значительно увеличивает пропускную способность процессора и лишает необходимости ожидать считывания команды из памяти при занятом другими операциями интерфейсе микросхемы.
Варианты микропроцессора, аналоги и конкуренты
Процессор выпускался в керамических и пластмассовых корпусах с 40 выводами. Были доступны версии с частотами 5, 8 и 10 МГц, обозначавшиеся как 8086, 8086-2 и 8086-1 .
Основными конкурентами микропроцессора Intel 8086 были Motorola 68000 , Zilog Z8000 , чипсеты F-11 и J-11 семейства PDP-11 , MOS Technology 65C816 . В некоторой степени, в области военных разработок, конкурентами являлись процессоры-реализации MIL-STD-1750A .
Аналогами микропроцессора Intel 8086 являлись такие разработки, как NEC V30 , который был на 5 % производительнее Intel 8086, но при этом был полностью с ним совместим. Советским аналогом являлся микропроцессор К1810ВМ86 , входивший в серию микросхем К1810 .
Аппаратные режимы
Процессоры 8086 и 8088 могут работать в двух режимах: максимальном и минимальном .
Максимальный режим используется в сложных многопроцессорных системах, он также необходим для работы с математическим сопроцессором 8087. В максимальном режиме для выработки сигналов управления системной шиной необходим системный контроллер 8288. В компьютерах IBM PC и PC/XT процессор Intel 8088 используется в максимальном режиме, что позволяет ему работать с математическим сопроцессором 8087, который может быть установлен в сокет на материнской плате компьютера.
Минимальный режим используется в однопроцессорных системах. В этом режиме сигналы управления системной шиной процессор формирует сам.
Аппаратный режим определяется схемой включения процессора и не может быть изменён программно. Для задания режима используется вывод 33 (MN/ MX ), который соединяется либо с источником питания, либо с общим проводом. Изменение состояния вывода 33 меняет функции восьми других выводов процессора, отвечающих за управление системной шиной и связь с другими процессорами.
Микросхемы поддержки
Для создания микропроцессорной системы на основе процессоров 8086 и 8088 компанией Intel выпускались следующие микросхемы поддержки :
- Intel 8237 — контроллер прямого доступа к памяти
- Intel 8259 A — программируемый контроллер прерываний
- Intel 8284 — тактовый генератор
- Intel 8288 — системный контроллер
- Intel 8289 — арбитр системной шины Multibus
Также с процессорами могли использоваться микросхемы, ранее разработанные для процессоров 8080 и 8085 :
- Intel 8251 — универсальный синхронно/асинхронный последовательный приёмопередатчик
- Intel 8253 — трёхканальный программируемый интервальный таймер
- Intel 8255 — трёхканальный параллельный интерфейс
- Intel 8257 — контроллер прямого доступа к памяти
- Intel 8271 — контроллер гибких магнитных дисков
- Intel 8273 — контроллер протокола HDLC /SDLC
- Intel 8275 — контроллер ЭЛТ -дисплея
- Intel 8279 — контроллер клавиатуры и светодиодного дисплея
- Intel 8282 — 8-битный регистр-защёлка без инверсии
- Intel 8283 — 8-битный регистр-защёлка с инверсией
- Intel 8286 — 8-битный двунаправленный шинный формирователь без инверсии
- Intel 8287 — 8-битный двунаправленный шинный формирователь с инверсией
Микрокомпьютеры на основе Intel 8086
Первоначально процессор Intel 8086 использовался в промышленных системах. Его массовому применению препятствовала довольно высокая цена — 360 долларов на момент анонса . Кроме того, для 16-разрядной подсистемы памяти, используемой процессором, обычно требовалось вдвое больше микросхем по сравнению с 8-разрядной, что увеличивало размеры, сложность и стоимость печатных плат. В связи с этим руководством Intel ещё в конце разработки Intel 8086 было принято решение о выпуске бюджетной версии . Процессор Intel 8088 на момент анонса стоил 124,8 доллара и использовал 8-разрядную подсистему памяти, что делало его экономически более привлекательным. Он стал основой одного из самых известных персональных компьютеров — IBM PC .
Процессор Intel 8086 применялся:
- в одноплатном компьютере ISBC 86/12 с шиной Multibus , анонсированном корпорацией Intel в 1978 году
- в прототипе одного из первых портативных компьютеров Xerox NoteTaker , представленном в 1978 году. Компьютер содержал три микросхемы Intel 8086 в качестве основного и графического процессоров, а также процессора ввода/вывода. Компьютер остался на стадии прототипа и не выпускался массово
- в одноплатном компьютере SCP200B с шиной S-100 , выпускавшемся компанией с ноября 1979 года
- в персональном компьютере Mycron 2000 норвежской компании Mycron, представленном в 1980 году
- в IBM PC совместимом компьютере Olivetti M24 , представленном в 1983 году (позже выпускался под маркой AT&T 6300). Процессор работал на частоте 8 МГц. В компьютер могли устанавливаться как 8-разрядные платы с шиной ISA , так и 16-разрядные платы с разъёмом собственной конструкции, несовместимым с разъёмами IBM PC AT
- в компьютере фирмы , выпущенном в 1983 году
- в IBM PC совместимом компьютере Compaq Deskpro Model 1 фирмы Compaq , представленном 28 июня 1984 года. Процессор работал на частоте 7,14 МГц , в компьютер могли устанавливаться 8-разрядные платы с шиной ISA
- в моделях 25 и 30 компьютеров IBM PS/2 , представленных в 1987 году. Процессор работал на частоте 8 МГц
- в компьютерах PC1512, PC1640, PC2086, PC3086 и PC5086 фирмы Amstrad
- в компьютерах NEC PC-9801 фирмы NEC
- в компьютерах Tandy 1000 серий SL и RL
- в текстовом процессоре
- в компьютере Wang Professional Computer компании Wang Laboratories
- в оборудовании для наземного обслуживания кораблей « Спейс шаттл ». NASA использовало оригинальные процессоры Intel 8086 вплоть до закрытия программы «Космическая транспортная система» в 2011 году. Такое решение было принято для предотвращения возможной , связанной с переходом на более новые версии процессоров или использования их несовершенных клонов
- в автоматической межпланетной станции Lunar Prospector . Использовалась КМОП -версия 8086
- советский компьютер марки « Искра-1030 », программно и аппаратно (но не конструктивно) совместимый с международным стандартом « IBM PC/XT »
- компьютер болгарского происхождения: Изот -1036С.
Технические характеристики
- Дата анонса: 8 июня 1978 года
-
Тактовая частота: от 4 до 16 МГц
- производительность:
- 5 МГц (модель 8086), при частоте 4,77 МГц ( IBM PC ) — 0,33 MIPS
- 8 МГц (модель 8086-2 — 0,66 MIPS)
- 10 МГц (модель 8086-1 — 0,75 MIPS)
-
Приблизительные затраты времени на операции, процессорных циклов (EA — время, необходимое для расчёта эффективного адреса памяти, которое варьируется от 5 до 12 циклов):
- Суммирование: 3—4 (регистровое), (9—25) +EA — при операциях с памятью
- Умножение без знака: 70—118 (регистровое), (76—139) +EA — при операциях с памятью
- Умножение знаковое: 80—154 (регистровое), (86—160) +EA — при операциях с памятью
- Деление без знака: 80—162 (регистровое), (86—168) +EA — при операциях с памятью
- Деление знаковое: 101—184 (регистровое), (107—190) +EA — при операциях с памятью
- Перемещение данных: 2 (между регистрами), (8—14) +EA — при операциях с памятью
- Разрядность регистров : 16 бит
- Разрядность шины данных : 16 бит
- Разрядность шины адреса : 20 бит
- Объём адресуемой памяти: 1 Мбайт
- Адресное пространство I/O: 64 Кбайт
- Количество транзисторов: 29 000
- Техпроцесс: 3000 нм (3 мкм) HMOS, 1500 нм (1.5 мкм) HMOS-III
- Площадь кристалла: ~30 мм 2 (поздние версии — 16 мм 2 на техпроцессе HMOS-III)
- Максимальное тепловыделение корпуса: 1,75 Вт (фактическое потребление — 0,65 Вт); 2.5 Вт для 10-МГц версии
- Напряжение питания: +5 В
- Разъём: DIP-40
- Корпус: 40-контактный керамический или пластиковый DIP , позже — 56-контактный QFP и 44-контактный PLCC
- Поддерживаемые технологии: 98 инструкций
- Объём очереди команд: 6 байт (кэш-буфер команд)
Эмулятор
Проект эмулятора процессора Intel 8086 на МК STM32 :
Примечания
- . Intel. Дата обращения: 11 августа 2007. Архивировано из 6 июля 2007 года.
- ↑ Stephen P. Morse et al. . Дата обращения: 24 сентября 2016. 27 сентября 2016 года.
- , с. 13—17.
- от 22 октября 2016 на Wayback Machine (англ.)
- , с. 20.
- ↑ . — Intel Corporation, 1985. — С. 1—90, 1-125. — ISBN 0-917017-36-6 . 19 октября 2016 года. . Дата обращения: 16 октября 2016. Архивировано 19 октября 2016 года.
- John Sheesley. (16 июня 2008). Дата обращения: 30 октября 2016. 31 октября 2016 года.
- // IEEE Spectrum. — 2009. — № 5 . — ISSN . 30 марта 2014 года.
- // Computerworld. — 1979. — Т. XIII , № 20 . — С. 71 . — ISSN . 31 октября 2016 года.
- // Computerworld. — 1978. — Т. XII , № 50 . — С. 86 . — ISSN . 31 октября 2016 года.
- . Дата обращения: 30 октября 2016. 9 ноября 2016 года.
- Mark Zachmann. // InfoWorld. — Palo Alto, CA: Popular Computing, 1982. — Т. 4 , № 33 . — С. 57–58 . — ISSN . 3 августа 2020 года.
- William J. Broad. (12 мая 2002). Дата обращения: 28 сентября 2017. 29 июня 2016 года.
- iliasam. . — 2022-05-01. 20 мая 2022 года.
Литература
- Михаил Гук. Процессоры Intel: от 8086 до Pentium II. — СПб. : Питер, 1997. — 224 с. — ISBN 5-88782-398-4 .
См. также
Ссылки
- 2021-04-19
- 1