Intel 8086 - Intel 8086

Intel 8086
Intel C8086.jpg
Редкий процессор Intel C8086 в фиолетовом керамическом DIP-корпусе с припаянными сбоку контактами
Общая информация
Запущен1978
Снято с производства1998[1]
Общий производитель (и)
Спектакль
Максимум. ЦПУ тактовая частотаОт 5 МГц до 10 МГц
Ширина данных16 бит
Ширина адреса20 бит
Архитектура и классификация
Мин. размер элемента3 мкм
Набор инструкцийx86-16
Физические характеристики
Транзисторы
  • 29,000
СопроцессорIntel 8087
Пакет (ы)
Розетки)
Продукты, модели, варианты
Вариант (ы)8088
История
ПредшественникIntel 8085
Преемник80186 и 80286 (оба были представлены в начале 1982 г.)

В 8086[2] (также называемый iAPX 86)[3] это 16 бит микропроцессор чип разработан Intel с начала 1976 года по 8 июня 1978 года, когда он был выпущен. В Intel 8088, выпущенный 1 июля 1979 г.,[4] это немного модифицированный чип с внешним 8-битным шина данных (позволяя использовать более дешевые и меньшие объемы поддержки ИС ),[примечание 1] и примечателен тем, что процессор, использованный в оригинале IBM PC дизайн.

8086 дал начало архитектура x86, которая в конечном итоге стала самой успешной линейкой процессоров Intel. 5 июня 2018 года Intel выпустила ограниченный выпуск ЦП в честь 40-летия Intel 8086, названный Intel Core i7-8086K.[4]

История

Фон

В 1972 году Intel выпустила 8008, первый 8-битный микропроцессор.[заметка 2] Он реализовал Набор инструкций разработано Datapoint корпорация с программируемыми ЭЛТ-терминалы в виду, который также оказался довольно универсальным. Для устройства потребовалось несколько дополнительных ИС для производства функционального компьютера, отчасти из-за того, что он был упакован в небольшой 18-контактный «пакет памяти», что исключало использование отдельной адресной шины (Intel в первую очередь была DRAM производитель в то время).

Два года спустя Intel выпустила 8080,[заметка 3] используя новый 40-контактный Пакеты DIL изначально разработан для калькулятор ИС для включения отдельной адресной шины. Он имеет расширенный набор инструкций, который исходный код (нет двоичная совместимость ) с 8008[5] а также включает некоторые 16 бит инструкции для упрощения программирования. Устройство 8080 в конечном итоге было заменено на истощение -основан 8085 (1977), что было достаточно для одного источника питания +5 В вместо трех различных рабочих напряжений, которые использовались ранее в микросхемах.[примечание 4] Другие хорошо известные 8-битные микропроцессоры, появившиеся в эти годы: Motorola 6800 (1974), Общий инструмент PIC16X (1975), Технология MOS 6502 (1975), Зилог Z80 (1976), и Motorola 6809 (1978).

Первый дизайн x86

Изображение кристалла процессора Intel 8086

Проект 8086 стартовал в мае 1976 года и изначально задумывался как временная замена амбициозным и отложенным iAPX 432 проект. Это была попытка привлечь внимание 16- и 32-разрядных процессоров других производителей с меньшей задержкой (например, Motorola, Зилог, и National Semiconductor ) и в то же время противодействовать угрозе со стороны Зилог Z80 (разработанный бывшими сотрудниками Intel), ставший очень успешным. Поэтому и архитектура, и физический чип были разработаны довольно быстро небольшой группой людей с использованием тех же основных микроархитектура элементы и методы физической реализации, используемые для немного более старых 8085 (и для которого 8086 также будет функционировать как продолжение).

Продается как источник совместимый,[6] 8086 был разработан, чтобы позволить язык ассемблера для 8008[нужна цитата ], 8080 или 8085 быть автоматически конвертируется в эквивалентный (неоптимальный) исходный код 8086, с минимальным ручным редактированием или без него. Модель программирования и набор команд (в общих чертах) основаны на 8080, чтобы сделать это возможным. Однако дизайн 8086 был расширен для поддержки полной 16-битной обработки вместо довольно ограниченных 16-битных возможностей 8080 и 8085.

Также были добавлены новые виды инструкций; полная поддержка знаковых целых чисел, адресации по основанию + смещению и самоповторяющихся операций была сродни Z80 дизайн[7] но все они были сделаны немного более общими в 8086. Инструкции, непосредственно поддерживающие вложенный АЛГОЛ -семейные языки, такие как Паскаль и PL / M также были добавлены. По словам главного архитектора Стивен П. Морс, это было результатом более ориентированного на программное обеспечение подхода, чем при проектировании более ранних процессоров Intel (разработчики имели опыт работы с реализациями компиляторов). Другие улучшения включены микрокодированный инструкции умножения и деления, а также структура шины, лучше адаптированная для будущих сопроцессоров (например, 8087 и 8089 ) и многопроцессорные системы.

Первая версия набора инструкций и архитектуры высокого уровня была готова примерно через три месяца.[примечание 5] а поскольку инструменты САПР почти не использовались, над чипом одновременно работали четыре инженера и 12 проектировщиков.[примечание 6] От идеи до рабочего продукта 8086 потребовалось чуть больше двух лет, что считалось довольно быстрым для сложной конструкции в 1976–1978 годах.

8086 был секвенирован[примечание 7] используя смесь случайная логика[8] и микрокод и был реализован с использованием схемы nMOS с истощающей нагрузкой примерно с 20000 активных транзисторы (29 000, считая все ПЗУ и PLA места). Вскоре он был переведен на новый усовершенствованный производственный процесс nMOS, названный HMOS (для высокопроизводительной MOS), которую Intel первоначально разработала для производства быстрых статическая RAM товары.[примечание 8] За этим последовали версии HMOS-II, HMOS-III и, в конечном итоге, полностью статический CMOS версия для устройств с батарейным питанием, изготовленная с использованием ХМОС процессы.[примечание 9] Размер исходного чипа составлял 33 мм², а минимальный размер элемента - 3,2 мкм.

Архитектура была определена Стивен П. Морс с некоторой помощью и помощью Брюса Равенеля (архитектора 8087) в доработке окончательных версий. Дизайнер логики Джим МакКевитт и Джон Бейлисс были ведущими инженерами группы разработчиков аппаратного уровня.[примечание 10] и Билл Полман, менеджер проекта. Наследие 8086 сохраняется в базовом наборе команд современных персональных компьютеров и серверов; 8086 также предоставил свои последние две цифры более поздним расширенным версиям дизайна, таким как Intel 286 и Intel 386, все из которых в конечном итоге стали известны как x86 семья. (Другая ссылка заключается в том, что Идентификатор поставщика PCI для устройств Intel - 8086час.)

Подробности

Назначение контактов 8086 в минимальном и максимальном режиме

Автобусы и работа

Все внутренние регистры, а также внутренние и внешние шины данных имеют ширину 16 разрядов, что твердо определяет «16-битный микропроцессор» 8086. 20-битная внешняя адресная шина обеспечивает 1МБ физическое адресное пространство (220 = 1 048 576). Адресное пространство адресуется посредством «сегментации» внутренней памяти. Шина данных мультиплексированный с адресной шиной, чтобы уместить все линии управления в стандартный 40-контактный двухрядный корпус. Он обеспечивает 16-битную адресную шину ввода / вывода, поддерживающую 64КБ отдельного пространства ввода / вывода. Максимальное линейное адресное пространство ограничено 64 КБ просто потому, что внутренние регистры адреса / индекса имеют ширину всего 16 бит. Программирование памяти размером более 64 КБ включает настройку сегментных регистров (см. Ниже); эта трудность существовала до 80386 архитектура представила более широкие (32-битные) регистры (аппаратное обеспечение управления памятью в 80286 не помог в этом отношении, так как его регистры все еще имеют ширину всего 16 бит).

Аппаратные режимы

Некоторые из управляющих контактов, которые передают важные сигналы для всех внешних операций, имеют более одной функции в зависимости от того, работает ли устройство в мин или же Максимум режим. Первый режим предназначен для небольших однопроцессорных систем, а второй - для средних или больших систем, использующих более одного процессора (своего рода многопроцессорный режим). Максимальный режим требуется при использовании сопроцессора 8087 или 8089. Напряжение на выводе 33 (МН /MX) определяем режим. Изменение состояния контакта 33 изменяет функцию некоторых других контактов, большая часть которых связана с тем, как ЦП обрабатывает (локальную) шину. [примечание 11] Этот режим обычно встроен в схему и поэтому не может быть изменен программно. Работа этих режимов описана в виде временных диаграмм в таблицах данных и руководствах Intel. В минимальном режиме все управляющие сигналы генерируются самим 8086.

Регистры и инструкции

Регистры Intel 8086
1918171615141312111009080706050403020100(битовая позиция)
Основные регистры
 AHALТОПОР (первичный аккумулятор)
 BHBLBX (база, аккумулятор)
 CHCLCX (счетчик, аккумулятор)
 DHDLDX (аккумулятор, расширенный согласно)
Индексные регистры
0 0 0 0SISнаш яndex
0 0 0 0DIDназначение яndex
0 0 0 0BPBас пласточка
0 0 0 0SPSзакрепка пласточка
Счетчик команд
0 0 0 0IPяинструкция пласточка
Сегментные регистры
CS0 0 0 0Cода Sкромка
DS0 0 0 0DАта Sкромка
ES0 0 0 0Extra Sкромка
SS0 0 0 0Sзакрепка Sкромка
Регистр статуса
 ----ОDяТSZ-А-п-CФлаги

8086 имеет восемь более или менее общих 16-битных регистры (в том числе указатель стека но исключая указатель инструкции, регистр флага и регистры сегмента). К четырем из них, AX, BX, CX, DX, также можно получить доступ как к вдвое большему количеству 8-битных регистров (см. Рисунок), в то время как другие четыре, SI, DI, BP, SP, являются только 16-битными.

Благодаря компактному кодированию, основанному на 8-битных процессорах, большинство инструкций являются одноадресными или двухадресными операциями, что означает, что результат сохраняется в одном из операндов. В памяти может находиться не более одного операнда, но этот операнд памяти также может быть пункт назначения, а другой операнд источник, может быть регистр или же немедленный. Одна ячейка памяти также часто может использоваться как источник и пункт назначения что, среди прочего, способствует плотность кода сравнимо (а часто и лучше) с большинством восьмибитных машин того времени.

Степень универсальности большинства регистров намного выше, чем в 8080 или 8085. Однако регистры 8086 были более специализированными, чем в большинстве современных миникомпьютеры и также используются неявно в некоторых инструкциях. Хотя это совершенно разумно для программиста на ассемблере, это делает распределение регистров для компиляторов более сложным по сравнению с более ортогональными 16-битными и 32-битными процессорами того времени, такими как PDP-11, VAX, 68000, 32016 и т.д. С другой стороны, будучи более обычным, чем довольно минималистичные, но вездесущие 8-битные микропроцессоры, такие как 6502, 6800, 6809, 8085, MCS-48, 8051, и других современных аккумуляторных машин, построить эффективный генератор кода для архитектуры 8086.

Другим фактором для этого является то, что 8086 также представил некоторые новые инструкции (отсутствующие в 8080 и 8085) для лучшей поддержки языков программирования высокого уровня на основе стека, таких как Pascal и PL / M; некоторые из наиболее полезных инструкций толкать мем-опера, и Ret размер, поддерживая "Паскаль соглашение о вызовах "напрямую. (Некоторые другие, например толкать immed и войти, были добавлены в последующие процессоры 80186, 80286 и 80386.)

64 КБ (один сегмент) куча рост в сторону меньших адресов поддерживается в аппаратное обеспечение; 16-битные слова помещаются в стек, и на вершину стека указывает SS: SP. Всего 256прерывает, который может быть вызван как аппаратным, так и программным обеспечением. Прерывания могут каскадироваться, используя стек для хранения обратные адреса.

8086 имеет 64 КБ 8-битного (или, альтернативно, 32 КБ 16-битного слова) Порт ввода / вывода Космос.

Флаги

8086 имеет 16-битный регистр флагов. Девять из этих флагов кода состояния активны и указывают текущее состояние процессора: Перенести флаг (CF), Флаг четности (ПФ), Вспомогательный флаг переноса (AF), Нулевой флаг (ZF), Подписать флаг (SF), Флаг ловушки (TF), Флаг прерывания (ЕСЛИ), Флаг направления (DF) и Флаг переполнения Регистр флагов, также называемый словом состояния, выглядит следующим образом:[9]

Кусочек15-1211109876543210
Флаг ИЗDFЕСЛИTFSFZF AF ПФ CF

Сегментация

Также есть три 16-битных сегмент регистры (см. рисунок), которые позволяют 8086 ЦПУ получить доступ к одному мегабайт памяти необычным образом. Вместо того, чтобы объединять сегментный регистр с адресным регистром, как в большинстве процессоров, адресное пространство которых превышает размер их регистра, 8086 сдвигает 16-битный сегмент только на четыре бита влево перед добавлением его к 16-битному смещению (16-битный сегмент + смещение ), таким образом создавая 20-битный внешний (или действующий, или физический) адрес из пары 32-битный сегмент: смещение. В результате на каждый внешний адрес может ссылаться 212 = 4096 различных сегментов: пары смещений.

  0110 1000 1000 0111 0000Сегмент,16 бит, сдвинутый на 4 бита влево (или умноженный на 0x10)
+      0011 0100 1010 1001Компенсировать,16 бит
                          
  0110 1011 1101 0001 1001Адрес,20 бит

Хотя многие программисты считают эту схему сложной и громоздкой, она также имеет свои преимущества; небольшая программа (менее 64 КБ) может быть загружена, начиная с фиксированного смещения (например, 0000) в собственном сегменте, что позволяет избежать необходимости переезд, с не более чем 15 байтами отходов выравнивания.

Компиляторы семейства 8086 обычно поддерживают два типа указатель, возле и далеко. Ближайшие указатели - это 16-битные смещения, неявно связанные с кодом программы или сегментом данных, и поэтому могут использоваться только в частях программы, достаточно малых, чтобы поместиться в одном сегменте. Дальние указатели представляют собой 32-битные пары сегмент: смещение, разрешающие 20-битные внешние адреса. Некоторые компиляторы также поддерживают огромный указатели, которые похожи на дальние указатели, за исключением того, что арифметика указателя на огромный указатель обрабатывает его как линейный 20-разрядный указатель, а арифметика указателя на дальний указатель оборачивается вокруг в пределах своего 16-битного смещения, не касаясь сегментной части адреса.

Чтобы избежать необходимости указывать возле и далеко для многочисленных указателей, структур данных и функций компиляторы также поддерживают "модели памяти", которые определяют размеры указателей по умолчанию. В крошечный (макс. 64 КБ), маленький (макс 128 КБ), компактный (данные> 64K), средний (код> 64К), большой (код, данные> 64 КБ) и огромный (отдельные массивы> 64 КБ) модели охватывают практические комбинации ближних, дальних и огромных указателей на код и данные. В крошечный модель означает, что код и данные совместно используются в одном сегменте, как и в большинстве 8-битных процессоров, и могут использоваться для создания .com файлы, например. Предварительно скомпилированные библиотеки часто бывают в нескольких версиях, скомпилированных для разных моделей памяти.

По данным Morse et al.,.[10] разработчики фактически предполагали использовать 8-битный сдвиг (вместо 4-битного), чтобы создать физическое адресное пространство размером 16 МБ. Однако, поскольку это заставило бы сегменты начинаться с 256-байтовых границ, а 1 МБ считался очень большим для микропроцессора примерно в 1976 году, идея была отклонена. Кроме того, в недорогом 40-контактном корпусе не хватало выводов для дополнительных четырех выводов адресной шины.

В принципе, адресное пространство серии x86 мог были расширены в более поздних процессорах за счет увеличения значения сдвига, пока приложения получали свои сегменты из операционной системы и не делали предположений об эквивалентности различных пар сегмент: смещение.[примечание 12] На практике было широко распространено использование «огромных» указателей и подобных механизмов, а плоская 32-битная адресация стала возможной с 32-битными регистрами смещения в 80386, в конечном итоге расширила ограниченный диапазон адресации более общим способом (см. Ниже).

Intel могла бы решить реализовать память в 16-битных словах (что устранило бы BHE (Bus High Enable) вместе со многими уже описанными сложностями адресной шины). Это означало бы, что ко всем кодам и данным объекта команд нужно было обращаться в 16-битных единицах. Пользователи 8080 задним числом давно понял, что процессор очень эффективно использует свою память. Имея большое количество 8-битных объектных кодов, 8080 производит объектный код столь же компактный, как некоторые из самых мощных миникомпьютеров на рынке в то время.[11]

Если 8086 должен сохранять 8-битные объектные коды и, следовательно, эффективное использование памяти 8080, то он не может гарантировать, что (16-битные) коды операций и данные будут лежать на границе четно-нечетного байтового адреса. Первый 8-битный код операции сдвигает следующую 8-битную инструкцию на нечетный байт или 16-битную инструкцию на нечетно-четную границу байта. Реализуя BHE сигнала и необходимой дополнительной логики, 8086 позволяет инструкциям существовать как 1-байтовые, 3-байтовые или любые другие нечетные байтовые объектные коды.[11]

Проще говоря: это компромисс. Если адресация памяти упростится, так что доступ к памяти будет осуществляться только в 16-битных единицах, память будет использоваться менее эффективно. Intel решила усложнить логику, но более эффективно использовать память. Это было в то время, когда объем памяти был значительно меньше и дороже, чем тот, к которому пользователи привыкли сегодня.[11]

Перенос старого программного обеспечения

Небольшие программы могут игнорировать сегментацию и просто использовать простую 16-битную адресацию. Это позволяет 8 бит ПО легко переносится на 8086. Авторы большинства ДОС реализации воспользовались этим, предоставив Интерфейс прикладного программирования очень похоже на CP / M а также включая простые .com формат исполняемого файла, идентичный CP / M. Это было важно, когда 8086 и MS-DOS были новыми, потому что это позволяло быстро сделать доступными многие существующие CP / M (и другие) приложения, что значительно облегчило принятие новой платформы.

Пример кода

Следующие 8086/8088 ассемблер исходный код предназначен для подпрограммы с именем _memcpy который копирует блок байтов данных заданного размера из одного места в другое. Блок данных копируется по одному байту, а логика перемещения данных и цикла использует 16-разрядные операции.

           0000: 1000 0000: 10000000: 1000 550000: 1001 89 E50000: 1003 060000: 1004 8B 4E 060000: 1007 E3 110000: 1009 8B 76 040000: 100C 8B 7E 020000: 100F 1E0000: 1010 07 0000: 1011 8A 040000: 1013 88 050000 : 1015 460000: 1016 470000: 1017 490000: 1018 75 F7 0000: 101A 070000: 101B 5D0000: 101C 29 C00000: 101E C30000: 101F
; _memcpy (dst, src, len); Скопируйте блок памяти из одного места в другое.;; Параметры стека ввода; [BP + 6] = len, количество байтов для копирования; [BP + 4] = src, Адрес исходного блока данных; [BP + 2] = dst, адрес целевого блока данных;; Регистры возврата; AX = ноль            орг 1000ч       ; Начало в 0000: 1000 ч._memcpy     proc            толкать    бп          ; Настройте рамку вызова            mov     бп,зр            толкать    es          ; Сохранить ES            mov     сх,[бп+6]   ; Установите CX = len            jcxz    сделано        ; Если len = 0, вернуть            mov     си,[бп+4]   ; Установить SI = src            mov     ди,[бп+2]   ; Установите DI = dst            толкать    ds          ; Установите ES = DS            поп     esпетля        mov     аль,[си]     ; Загрузить AL из [src]            mov     [ди],аль     ; Сохранить AL в [dst]            inc     си          ; Увеличение src            inc     ди          ; Приращение dst            декабрь     сх          ; Уменьшить len            jnz     петля        ; Повторить циклсделано        поп     es          ; Восстановить ES            поп     бп          ; Восстановить предыдущий кадр вызова            суб     топор,топор       ; Установите AX = 0            Ret                 ; Возвращаться            конец proc

В приведенном выше коде используется регистр BP (базовый указатель) для установления кадр вызова, область в стеке, которая содержит все параметры и локальные переменные для выполнения подпрограммы. Этот вид соглашение о вызовах поддерживает повторно въезжающий и рекурсивный код и используется в большинстве АЛГОЛ-подобных языков с конца 1950-х годов.

Вышеупомянутая процедура представляет собой довольно громоздкий способ копирования блоков данных. 8086 предоставляет специальные инструкции для копирования строк байтов. Эти инструкции предполагают, что исходные данные хранятся в DS: SI, целевые данные хранятся в ES: DI, а количество копируемых элементов хранится в CX. Вышеупомянутая процедура требует, чтобы источник и блок назначения находились в одном сегменте, поэтому DS копируется в ES. Вышеупомянутый цикл цикла можно заменить на:

0000: 1011 FC0000: 1012 F20000: 1013 A4
            cld                  ; Копировать по более высоким адресампетля        repnz                ; Повторяйте до тех пор, пока CX = 0.            movsb                ; Переместить блок данных

Это копирует блок данных по одному байту за раз. В REPNZ инструкция вызывает следующие МОВСБ повторять до тех пор, пока CX не станет нулем, автоматически увеличивая SI и DI и уменьшая CX по мере повторения. В качестве альтернативы MOVSW Инструкция может использоваться для копирования 16-битных слов (двойных байтов) за раз (в этом случае CX подсчитывает количество скопированных слов вместо количества байтов). Большинство сборщиков правильно распознают REPNZ инструкция, если используется как встроенный префикс к МОВСБ инструкция, как в РЭПНЗ МОВСБ.

Эта процедура будет работать правильно, если ее прервать, потому что счетчик программ будет продолжать указывать на REP инструкцию до завершения копирования блока. Таким образом, копирование будет продолжено с того места, где оно было остановлено, когда процедура обслуживания прерывания вернет управление.

Спектакль

Упрощенная блок-схема Intel 8088 (вариант 8086); 1 = основные и индексные регистры; 2 = сегментные регистры и IP; 3 = сумматор адресов; 4 = внутренняя адресная шина; 5 = очередь инструкций; 6 = блок управления (очень упрощенный!); 7 = интерфейс шины; 8 = внутренняя шина данных; 9 = ALU; 10/11/12 = внешний адрес / данные / шина управления.

Хотя это частично затмевается другими конструктивными решениями этого конкретного чипа, мультиплексированный адрес и шины данных немного ограничить производительность; Передача 16-битных или 8-битных величин выполняется в четырехтактном цикле доступа к памяти, который быстрее для 16-битных, хотя и медленнее для 8-битных величин по сравнению со многими современными 8-битными процессорами. Поскольку инструкции имеют размер от одного до шести байтов, выборка и выполнение выполняются одновременный и разделены на отдельные блоки (как и в современных процессорах x86): блок интерфейса шины передает поток инструкций в исполнительная единица через 6-байтовую очередь предварительной выборки (форма слабосвязанной конвейерная обработка ), ускоряя операции на регистры и немедленно, в то время как операции с памятью стали медленнее (четыре года спустя эта проблема с производительностью была исправлена ​​с помощью 80186 и 80286 ). Однако полная (а не частичная) 16-битная архитектура с полной шириной ALU означало, что 16-битные арифметические инструкции теперь могут выполняться за один цикл ALU (вместо двух, через внутренний перенос, как в 8080 и 8085), что значительно ускоряет выполнение таких инструкций. В сочетании с ортогонализации операций по сравнению с операнд типы и режимы адресации, а также другие улучшения, это сделало прирост производительности по сравнению с 8080 или 8085 довольно значительным, несмотря на случаи, когда более старые чипы могут быть быстрее (см. ниже).

Время выполнения типичных инструкций (в тактовых циклах)[12]
инструкциярегистр-регистрзарегистрироваться немедленнорегистр-памятьрегистр памятинемедленная память
mov248 + EA9 + EA10 + EA
ALU349 + EA,16 + EA,17 + EA
Прыгатьрегистр ≥ 11 ; метка ≥ 15 ; состояние, этикетка ≥ 16
целочисленное умножение70 ~ 160 (в зависимости от операнда данные а также размер) включая любой советник
целочисленное деление80 ~ 190 (в зависимости от операнда данные а также размер) включая любой советник
  • EA = время для вычисления эффективного адреса, от 5 до 12 циклов.
  • Лучшее время - это время, зависящее от состояния предварительной выборки, выравнивания инструкций и других факторов.

Как видно из этих таблиц, операции с регистрами и непосредственными операциями выполнялись быстро (от 2 до 4 циклов), в то время как инструкции и переходы к операндам памяти выполнялись довольно медленно; прыжки заняли больше циклов, чем на простых 8080 и 8085, а 8088 (используемый в IBM PC) дополнительно затруднялся из-за более узкой шины. Причин, по которым большинство инструкций, связанных с памятью, было медленным, было три:

  • Слабосвязанные блоки выборки и выполнения эффективны для предварительной выборки команд, но не для переходов и произвольного доступа к данным (без специальных мер).
  • Специального сумматора для вычисления адреса не было; подпрограммы микрокода должны были использовать для этого основной ALU (хотя существовал специальный сегмент + компенсировать сумматор).
  • Шины адреса и данных были мультиплексированный, вызывая немного более длительный (33 ~ 50%) цикл шины, чем в типичных современных 8-битных процессорах.

Тем не менее, производительность доступа к памяти была значительно улучшена с помощью следующего поколения процессоров Intel семейства 8086. В 80186 и 80286 у обоих было выделенное оборудование для вычисления адреса, что позволяло сэкономить много циклов, а у 80286 также были отдельные (не мультиплексированные) шины адреса и данных.

Плавающая точка

8086/8088 можно подключить к математическому сопроцессору для добавления оборудования / микрокода. плавающая точка спектакль. В Intel 8087 был стандартным математическим сопроцессором для 8086 и 8088, работающим с 80-битными числами. Производители любят Cyrix (Совместим с 8087) и Weitek (нет 8087-совместимый) в конечном итоге придумали высокопроизводительные сопроцессоры с плавающей запятой, которые конкурировали с 8087.

Версии чипа

Тактовая частота изначально была ограничена 5 МГц,[примечание 13] но последние версии в HMOS были указаны для 10 МГц. HMOS-III и CMOS версии выпускались долгое время (по крайней мере, до 1990-х годов) для встроенные системы, хотя его преемник, 80186 /80188 (который включает в себя некоторые периферийные устройства на кристалле), был более популярен для встроенного использования.

80C86, CMOS-версия 8086, использовалась в GRiDPad, Toshiba T1200, HP 110 и, наконец, 1998–1999 гг. Лунный изыскатель.

Что касается упаковки, Intel 8086 был доступен как в керамическом, так и в пластиковом корпусе DIP.

Керамический вариант D8086
Пластиковый вариант P8086

Список Intel 8086

Номер моделиЧастотаТехнологииДиапазон температурДата выпускаЦена (долл. США)[list2 1]
80865 МГц[13]HMOSОт 0 ° C до 70 ° C[14]8 июня 1978 г.[15]$86.65[16]
8086-110 МГцHMOS IIКоммерческий
8086-28 МГц[13]HMOS IIКоммерческийЯнварь / февраль 1980 г.[17]$200[17][18]
8086-44 МГц[13]HMOSКоммерческий$72.50[list2 2][19]
I80865 МГцHMOSПромышленный от −40 ° C до +85 ° C[14]Май / июнь 1980 г.[14]$173.25[14]
M80865 МГцHMOSВоенный класс от −55 ° C до +125 ° C[20]
  1. ^ В количестве 100 шт.
  2. ^ Цена снижена на 21% с 99,00 долларов США, количественная информация не указана.

Производные и клоны

Совместимые - и, во многих случаях, улучшенные - версии были произведены Fujitsu, Харрис /Интерсил, OKI, Siemens AG, Инструменты Техаса, NEC, Mitsubishi, и AMD. Например, NEC V20 и NEC V30 пара была аппаратно совместима с 8088 и 8086, хотя NEC сделала оригинальные клоны Intel μPD8088D и μPD8086D соответственно, но включала набор инструкций 80186 вместе с некоторыми (но не всеми) улучшениями скорости 80186, обеспечивая возможность подключения для повышения как набора команд, так и скорости обработки без изменения производителями своих конструкций. Такие относительно простые и маломощные 8086-совместимые процессоры в CMOS до сих пор используются во встроенных системах.

Электронная промышленность Советский союз смог воспроизвести 8086 через обе промышленный шпионаж и обратная инженерия[нужна цитата ]. Получившийся чип, К1810ВМ86, был двоичным и совместимым по выводам с 8086.

i8086 и i8088 были ядрами ПК-совместимого советского производства. EC1831 и EC1832 рабочие столы. (EC1831 - это EC-идентификатор IZOT 1036C, а EC1832 - EC-идентификатор IZOT 1037C, разработанный и произведенный в Болгарии. EC означает Единая система.) Однако компьютер EC1831 (IZOT 1036C) имел значительные аппаратные отличия от прототипа IBM PC. . EC1831 был первым ПК-совместимым компьютером с динамическим измерением размера шины (патент США № 4831514). Позже некоторые принципы EC1831 были приняты в PS / 2 (патент США № 5,548,786) и некоторых других машинах (заявка на патент Великобритании, публикация № GB-A-2211325, опубликованная 28 июня 1989 г.).

Советский клон К1810ВМ86
OKI M80C86A QFP-56
NEC μPD8086D-2 (8 МГц) с 1984 года, неделя 19 ЯПОНИЯ (клон Intel D8086-2)

Поддержка чипов

  • Intel 8237: контроллер прямого доступа к памяти (DMA)
  • Intel 8251: универсальный синхронный / асинхронный приемник / передатчик на 19,2 кбит / с
  • Intel 8253: программируемый интервальный таймер, 3x 16-бит макс 10 МГц
  • Intel 8255: программируемый периферийный интерфейс, 3x 8-битных контакта ввода / вывода, используемых для подключения принтера и т. д.
  • Intel 8259: программируемый контроллер прерываний
  • Intel 8279: контроллер клавиатуры / дисплея, сканирует матрицу клавиатуры и матрицу дисплея, например 7 сегментов
  • Intel 8282 /8283: 8-битная защелка
  • Intel 8284: генератор часов
  • Intel 8286 /8287: двунаправленный 8-битный драйвер. В 1980 году обе версии Intel I8286 / I8287 (промышленного класса) были доступны по цене 16,25 долларов США в количестве 100 штук.[14]
  • Intel 8288: контроллер шины
  • Intel 8289: автобусный арбитр
  • NEC µPD765 или Intel 8272A: контроллер гибких дисков[21]

Микрокомпьютеры, использующие 8086

  • Intel Multibus -совместимый одноплатный компьютер ISBC 86/12 был анонсирован в 1978 году.[22]
  • В Xerox NoteTaker был одним из первых портативный компьютер разработал в 1978 году и использовал три микросхемы 8086 (как ЦП, графический процессор и процессор ввода-вывода), но так и не поступил в коммерческое производство.
  • Сиэтл Компьютерные продукты отправленный Автобус С-100 на базе 8086 систем (SCP200B) еще в ноябре 1979 года.
  • Норвежский Mycron 2000, введен в 1980 году.
  • Один из самых влиятельных микрокомпьютеров, IBM PC, использовал Intel 8088, версия 8086 с 8-битным шина данных (как уже упоминалось выше).
  • Первый Compaq Deskpro использовал 8086, работающий на частоте 7,16 МГц, но был совместим с картами расширения, предназначенными для 4,77 МГц IBM PC XT и мог переключить ЦП на более низкую скорость (что также включало буфер шины памяти для имитации более медленного доступа 8088), чтобы избежать проблем с синхронизацией программного обеспечения.
  • 8 МГц 8086-2 использовался в AT&T 6300 ПК (построен Olivetti и известный во всем мире под несколькими брендами и номерами моделей), настольный микрокомпьютер, совместимый с IBM PC. M24 / PC 6300 имеет 8-битные слоты расширения, совместимые с IBM PC / XT, но некоторые из них имеют собственное расширение, обеспечивающее полную 16-битную шину данных процессора 8086 (по концепции аналогично 16-битным слотам IBM PC AT, но отличается конструктивными особенностями и физически несовместимыми), и все периферийные устройства системы, включая встроенную видеосистему, также могут передавать 16-битные данные. Более поздний Olivetti M24SP имел 8086-2, работающий на максимальной частоте 10 МГц.
  • В IBM PS / 2 модели 25 и 30 были построены с 8 МГц 8086.
  • Амстрад / Шнайдер PC1512, PC1640, PC2086, PC3086 и PC5086 все использовали процессоры 8086 с частотой 8 МГц.
  • В NEC PC-9801.
  • В Тэнди 1000 В машинах серии SL и RL использовались процессоры 8086 с частотой 9,47 МГц.
  • В IBM Displaywriter текстовый процессор[23] и профессиональный компьютер Wang, производимый Ван Лаборатории, также использовал 8086.
  • НАСА использовали оригинальные процессоры 8086 на оборудовании для наземного обслуживания Космический шаттл "открытие" до окончания программы космических челноков в 2011 году. Это решение было принято, чтобы предотвратить программная регрессия это может произойти в результате обновления или перехода на несовершенные клоны.[24]
  • КАМАН технологические и территориальные радиационные мониторы[25]

Смотрите также

Примечания

  1. ^ Меньше буферов TTL, защелок, мультиплексоров (хотя количество TTL логика не было резко снижено). Это также позволяет использовать дешевые ИС семейства 8080, где 8254 CTC, 8255 PIO и 8259 PIC использовались при разработке IBM PC. Кроме того, это упрощает разводку печатных плат и удешевляет платы, а также требует меньшего количества микросхем DRAM (шириной 1 или 4 бита).
  2. ^ с использованием дополнительной нагрузки Логика PMOS (требуется 14V, достигая TTL-совместимости, имея VCC при +5 В и ВDD при −9 В).
  3. ^ Использование ненасыщенной улучшающей нагрузки Логика NMOS (требует более высокого напряжения затвора для затворов транзистора нагрузки).
  4. ^ Это стало возможным благодаря логике nMOS с истощающей нагрузкой (позже 8085 был создан с использованием обработки HMOS, как и 8086).
  5. ^ По словам Морса, Rev.0 набора команд и архитектуры была готова примерно за три месяца.
  6. ^ С помощью рубилит, световые доски, линейки, электрические ластики и цифровой преобразователь (по словам Дженни Эрнандес, члена команды разработчиков 8086, в заявлении, сделанном на веб-странице Intel в связи с ее 25-летием).
  7. ^ 8086 использовал меньше микрокода, чем конструкции многих конкурентов, таких как MC68000 и другие.
  8. ^ Быстрые статические ОЗУ в технологии MOS (такие же быстрые, как биполярные ОЗУ) были важным продуктом для Intel в тот период.
  9. ^ CHMOS - это название Intel для схем CMOS, изготовленных с использованием этапов обработки, очень похожих на HMOS.
  10. ^ Другими членами команды дизайнеров были Питер Столл и Дженни Эрнандес.
  11. ^ IBM PC и PC / XT используют Intel 8088, работающий в максимальном режиме, что позволяет процессору работать с дополнительным сопроцессором 8087, установленным в гнезде математического сопроцессора на ПК или материнской плате PC / XT. (Для ПК и ПК / XT может потребоваться максимальный режим по другим причинам, например, для поддержки контроллера DMA.)
  12. ^ Некоторые клоны 80186 действительно изменили значение сдвига, но обычно никогда не использовались в настольных компьютерах.
  13. ^ (IBM PC использовал 4,77 МГц, 4/3 стандартного NTSC цветовая вспышка частота)

Рекомендации

  1. ^ История ЦП - Музей ЦП - Жизненный цикл ЦП.
  2. ^ «Зал славы микропроцессоров». Intel. Архивировано из оригинал на 2007-07-06. Получено 2007-08-11.
  3. ^ Справочник программиста iAPX 286 (PDF). Intel. 1983. с. 1-1.
  4. ^ а б «С Днем Рождения, 8086: ограниченная серия Intel Core i7-8086K 8-го поколения обеспечивает лучшие игровые возможности». Intel.
  5. ^ «Семья 8080». CPU Мир.
  6. ^ Скэнлон, Лео Дж. (1988). 8086/8088/80286 язык ассемблера. Брейди Букс. п.12. ISBN  978-0-13-246919-7. […] 8086 программно совместим с 8080 на уровне ассемблера. […]
  7. ^ «Рождение стандарта: микропроцессор Intel 8086. Тридцать лет назад Intel выпустила процессор 8086, представив архитектуру x86, которая лежит в основе каждого ПК - Windows, Mac или Linux - производимого сегодня». Компьютерный мир. 17 июня 2008 г.
  8. ^ Geiger, Randall L .; Аллен, Филипп Э .; Strader, Ноэль Р. (1990). «Случайная логика против структурированных логических форм». Методы проектирования СБИС для аналоговых и цифровых схем. Макгроу-Хилл. п. 779. ISBN  0-07-023253-9. - Иллюстрация использования "случайного" описания логики управления ЦП
  9. ^ Корпорация Intel (1983). Руководство пользователя IAPX 86, 88, 186 и 188: справочник программиста. С. 3–5. ISBN  978-0835930352. OCLC  11091251.
  10. ^ Морс, Стивен П .; Равенел, Брюс В.; Мазор, Стэнли; Полман, Уильям Б. (октябрь 1980 г.). «Микропроцессоры Intel: от 8008 до 8086». IEEE Computer. 13 (10): 42–60. Дои:10.1109 / MC.1980.1653375. S2CID  206445851.
  11. ^ а б c Осборн, Адам; Кейн, Джерри (1981). Руководство по 16-битному процессору Osborne. С. 5–26. ISBN  0-931988-43-8.
  12. ^ Справочное руководство по Microsoft Macro Assembler 5.0. Корпорация Майкрософт. 1987 г. Время и кодировки в этом руководстве используются с разрешения Intel и взяты из следующих публикаций: Intel Corporation. Руководство пользователя iAPX 86, 88, 186 и 188, Справочник программиста, Санта-Клара, Калифорния, 1986. (Аналогично для iAPX 286, 80386, 80387.)
  13. ^ а б c Руководство пользователя семейства 8086. Корпорация Intel. Октябрь 1979. с. В-1. OCLC  65699372.
  14. ^ а б c d е Корпорация Intel (май – июнь 1980 г.). «8086 Доступно для промышленных предприятий». Предварительный просмотр Intel (Специальный выпуск: 16-битные решения): 29.CS1 maint: формат даты (связь)
  15. ^ Просмотр процессоров в хронологическом порядке по дате внедрения:
  16. ^ Корпорация Intel (май – июнь 1980 г.). «Семья 8086: концепции и реалии». Предварительный просмотр Intel (Специальный выпуск: 16-битные решения): 19.CS1 maint: формат даты (связь)
  17. ^ а б Корпорация Intel (январь – февраль 1980 г.). «Новые продукты: Faster 8086 обеспечивает на 60% больше производительности». Предварительный просмотр Intel: 22.CS1 maint: формат даты (связь)
  18. ^ Корпорация Intel (май – июнь 1980 г.). «Новые продукты семейства 8086 повышают производительность процессора на 50 процентов». Предварительный просмотр Intel (Специальный выпуск: 16-битные решения): 17.CS1 maint: формат даты (связь)
  19. ^ Корпорация Intel (май – июнь 1979 г.). «Компоненты микрокомпьютера: новое снижение цен и усовершенствование производства делают популярный микропроцессор 8086 еще более привлекательным». Предварительный просмотр Intel: 11.CS1 maint: формат даты (связь)
  20. ^ Корпорация Intel (август 1981 г.). Intel iAPX86, 88 Руководство пользователя. п. В-25. ISBN  0835930165. OCLC  8459750.
  21. ^ "Эволюция контроллера гибких дисков | Музей OS / 2". 2011-05-26. Получено 2016-05-12. В исходных IBM PC (1981) и PC / XT (1983) FDC физически располагался на отдельной плате адаптера дискеты. Сам FDC был NEC µPD765A или совместимой частью, например Intel 8272A.
  22. ^ Enterprise, I.D.G (11 декабря 1978 г.). «Intel добавляет 16-битную одноплатную плату». Computerworld. XII (50): 86. ISSN  0010-4841.
  23. ^ Захманн, Марк (23 августа 1982 г.). «Недостатки персонального компьютера IBM расстраивают критиков». InfoWorld. 4 (33): 57–58. ISSN  0199-6649. IBM Displaywriter заметно дороже, чем другие промышленные микросхемы, использующие 8086.
  24. ^ "Что касается старых деталей, НАСА смело идет ... на eBay". Нью-Йорк Таймс. 12 мая 2002 г.
  25. ^ Kaman Tech. Руководство

внешняя ссылка