8086

Материал из Википедии — свободной энциклопедии
Перейти к: навигация, поиск
<<   Intel 8086   >>
Центральный процессор
I8086.jpg
Микропроцессор Intel 8086
Производство: с 8 июня 1978 по 1990
Производители:
Частота ЦП: 4—10 МГц
Технология производства:
HMOS, CHMOS, 3 мкм
Наборы инструкций: x86
Разъём: DIP40, QFP56, PLCC44
Микропроцессор КР1810ВМ86, советский аналог Intel 8086

Intel 8086 (также известный как iAPX86) — первый 16-битный микропроцессор компании Intel, разрабатывавшийся с весны 1976 года и выпущенный 8 июня 1978 года.[1] Процессор содержал набор команд, который применяется и в современных процессорах, именно от этого процессора берёт своё начало известная на сегодня архитектура x86.

Основными конкурентами микропроцессора 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.

История[править | править вики-текст]

Предшественники[править | править вики-текст]

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

Двумя годами позже, в 1974-м, был запущен 8080, в новом, 40-пиновом DIP-корпусе, первоначально разработанном для микросхем калькуляторов. Он имел отдельную шину адресов и расширенный набор инструкций, кодово- (не бинарно-) совместимый с 8008, дополненный для удобства программирования несколькими 16-битными инструкциями. Процессор Intel 8080 часто называют первым по-настоящему удобным и полезным микропроцессором. В 1977 году он был заменён на Intel 8085, с одним питающим напряжением (+5В) вместо трёх различных на предшественнике и несколькими другими усовершенствованиями. Наиболее известными соперниками были 8-битные Motorola 6800 (1974), Microchip PIC16X (1975) (здесь наверное имеется в виду процессор General Instrument CP1600), 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-программ, а диаграммы были исполнены из текстовых символов. Использовались уже опробованные элементы микроархитектуры и физической реализации, в основном от Intel 8085.

Описание[править | править вики-текст]

Рынок 8-разрядных микропроцессоров в конце 1970-х был переполнен, и Intel оставляет попытки на нём закрепиться и выпускает свой первый 16-битный процессор. Процессор Intel 8086 представляет собой модернизированный процессор Intel 8080 и, хотя, разработчики не ставили перед собой цель достичь полной совместимости на программном уровне, большинство программ написанных для Intel 8080 способны выполняться и на Intel 8086 после перекомпиляции. Новый процессор несёт в себе множество изменений, которые позволили значительно (в 10 раз) увеличить производительность по сравнению с предыдущим поколением процессоров компании.

Регистры[править | править вики-текст]

Регистры общего назначения
AH AL AX (primary accumulator)
BH BL BX (base, accumulator)
CH CL CX (counter, accumulator)
DH DL DX (accumulator, other functions)
Индексные регистры
SI Source Index
DI Destination Index
Указательные регистры
BP Base Pointer
SP Stack Pointer
Регистр состояния
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 Code Segment
DS Data Segment
ES ExtraSegment
SS Stack Segment
Указатель команды
IP Instruction Pointer
Регистры 8086

Всего в процессоре Intel 8086 было 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, но и замедляет скорость передачи данных. Из-за того что выполнение отдельных команд меньше цикла ввода-вывода, в процессор был введён (впервые) буфер команд на 6 байт, это позволяло выполнять, например команды сложения, параллельно командам ввода-вывода.

Работа с памятью[править | править вики-текст]

1-й вариант. Для того чтобы адресовать больший, чем Intel 8080, объём памяти, потребовалось изменить способ адресации памяти. Ведь если использовать старые методы, когда адрес к ячейке памяти содержался в указательных регистрах, то пришлось бы увеличивать размер этих самых регистров, чтобы иметь возможность обращаться к большему объёму памяти. Поэтому для адресации 1 Мбайт памяти применили следующую схему. На шину адреса подавался физический адрес размером 20 бит, который формировался путём сложения содержимого одного из сегментных регистров (16 бит), умноженного на 24, с содержимым указательного регистра: таким образом, адресация ячейки памяти производилась по номеру сегмента и эффективному адресу ячейки в сегменте (называемому также смещением). Если результат сложения оказывался больше, чем 220 -1, то 21-й бит отбрасывался; такая процедура называется «заворачиванием» адреса (англ. address wraparound). Этот метод впоследствии (после появления защищённого режима) назвали реальным режимом адресации процессора, такой режим позволяет адресовать до 1 Мбайт памяти.

2-й вариант. Для того чтобы адресовать 1 мегабайт памяти (20 бит адреса) с использованием 16-битных регистров используется сегментирование. Старшие 4 бит адреса выводятся на отдельные контакты корпуса, а младшие 16 выводятся на совмещённую шину адреса-данных. Но граница сегмента не жёсткая, а плавающая. Для того чтобы адресовать нужный сегмент используются 16-битные регистры сегмента, значение которых сдвигается на 4 бита вверх и складывается с указательным 16-битным регистром. Полученное значение — 20 битный адрес памяти или устройства выводится на контакты. Если результат сложения оказывался больше чем 1 мегабайт, выводятся только младшие 20 бит адреса, а старший, 21-й бит, отбрасывается.

Схема, показывающая работу реального режима адресации процессора Intel 8086 и выше

Таким образом, память разделяется на сегменты, размером 64 Кбайт каждый и начинающиеся с адреса, кратного 16 (4 бита двоичного смещения вверх любого из регистра-указателей процессора), сегменты могли перекрываться или совпадать (граница параграфа);

В компьютере, подобном IBM PC, разработчики сэкономили 1 микросхему и решили не использовать разделение адресных пространств для памяти и для устройств ввода-вывода (т. н. верхняя памятьангл. upper memory) использовались для видеопамяти и BIOS-а, это ограничивало память, доступную пользователю, объёмом в 640 Кбайт (т. н. обычная памятьангл. conventional memory; страницы 0~9).

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

Система команд[править | править вики-текст]

Система команд процессора Intel 8086 состоит из 98 команд (и более 3800 их вариаций): 19 команд передачи данных, 38 команд их обработки, 24 команды перехода и 17 команд управления процессором. Возможно 7 режимов адресации. Микропроцессор не содержал команды для работы с числами с плавающей запятой. Данная возможность реализовывалась отдельной микросхемой, называемой математический сопроцессор, который устанавливался на материнской плате. Сопроцессор вовсе не обязательно должен был быть произвёден Intel (модель Intel 8087), к примеру, некоторые производители микросхем, такие как Weitek, выпускали более производительные сопроцессоры, чем Intel.

Система команд процессора Intel 8086 включает в себя несколько очень мощных строчных инструкций. Если инструкция имеет префикс REP (повтор), то процессор будет выполнять операции с блоками - перемещение блока данных, сравнение блоков данных, присвоение определённого значения блоку данных определенной величины, и т.д., то есть, одна инструкция 8086 с префиксом REP может выполнять 4-5 инструкций, выполняемых на некоторых других процессорах. Но следует упомянуть, что подобные приёмы были реализованы и в других процессорах - Zilog Z80 имел инструкции перемещения и поиска блоков, а Motorola 68000 может выполнять операции с блоками, используя всего две команды.

В микропроцессоре Intel 8086 была использована примитивная форма конвейерной обработки. Блок интерфейса с шиной подавал поток команд к исполнительному устройству через 6-байтовую очередь команд. Таким образом, выборка и выполнение новых команд могли происходить одновременно. Это значительно увеличивало пропускную способность процессора и лишало необходимости ожидать считывание команды из памяти при занятом другими операциями интерфейсе микросхемы.

Микрокомпьютеры на основе Intel 8086[править | править вики-текст]

Для работы процессора Intel 8086 требовался полностью новый 16-разрядный набор микросхем поддержки (шинные формирователи, мультиплексоры и демультиплексоры, интерфейсные микросхемы, набор различных контроллеров и т.п.). Так как рынок на тот момент был ориентирован на 8-разрядные микропроцессоры, то производителей которые производят 16-разрядные микросхемы поддержки почти не было. Это привело к тому, что данные микросхемы если и присутствовали, то в весьма ограниченном ассортименте и зачастую имели завышенную рыночную цену. Таким образом крайне мало производителей решились использовать процессор Intel 8086 в своих персональных компьютерах. Intel, столкнувшись с проблемой сбыта, разработала и выпустила в 1979 году процессор Intel 8088, который отличался от Intel 8086 в основном только 8-битной шиной данных. Однако, этот шаг позволил использовать совместно с Intel 8088 большой ассортимент 8-битных микросхем. На основе Intel 8088 было создано большое число персональных компьютеров, которые оставались популярными в 70-е и 80-е годы, а так же определили популярность набора команд x86 и, соответственно, дальнейшее развитие как процессоров Intel x86, так и компьютеров на основе данной линейки микропроцессоров. Знаменитый персональный компьютер IBM PC (модель IBM 5150) - прародитель всех современный IBM PC-совместимых машин - был построен именно на Intel 8088.

Тем не менее, дальнейшее развитие 16-разрядных систем, со временем, привело к выпуску большого ассортимента 16-разрядных микросхем поддержки от различных производителей по доступным ценам. Это позволило разрабатывать дешевые и разнообразные микрокомпьютеры на процессорах Intel 8086. Однако, к 1982 году в ассортименте Intel появились более современные и производительные процессоры с 16-разрядными шинами данных Intel 80186 и Intel 80286 и производительные компьютеры стали строиться преимущественно на процессоре Intel 80286 и, реже, на основе Intel 80186. Но всё же в основе некоторых микрокомпьютеров использовался Intel 8086, одним из таких является Mycron 2000 — первый коммерческий микрокомпьютер на базе Intel 8086. Машина для обработки текстов IBM Displaywriter, Compaq DeskPro и Wang Professional Computer также использовали Intel 8086.

Технические характеристики[править | править вики-текст]

  • Дата анонса: 8 июня 1978 года
  • Тактовая частота (МГц): от 4 до 10
    • производительность:
    • 5 (модель 8088), при частоте 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 мкм)
  • Площадь кристалла (кв. мм): ~30 (по другим данным, 16 мм²)
  • Максимальное тепловыделение корпуса: 1,75 Вт (фактическое потребление - 0,65 Вт)
  • Напряжение питания: +5 В
  • Разъём: DIP-40
  • Корпус: 40-контактный керамический или пластиковый DIP, позже - 56-контактный QFP и 44-контактный PLCC
  • Поддерживаемые технологии: 98 инструкций
  • Объём очереди команд: 6 байт (кэш-буфер команд)

См. также[править | править вики-текст]

Ссылки[править | править вики-текст]