Редкий процессор Intel C8086 в фиолетовом керамическом DIP-корпусе с припаянными сбоку контактами | |
Общая информация | |
---|---|
Запущен | 1978 г. |
Снято с производства | 1998 [1] |
Общий производитель (и) |
|
Спектакль | |
Максимум. Частота процессора | От 5 МГц до 10 МГц |
Ширина данных | 16 бит |
Ширина адреса | 20 бит |
Архитектура и классификация | |
Мин. размер элемента | 3 мкм |
Набор инструкций | x86-16 |
Физические характеристики | |
Транзисторы |
|
Сопроцессор | 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 с учетом программируемых терминалов CRT , который также оказался довольно универсальным. Устройства требуется несколько дополнительных микросхем для получения функционального компьютера, отчасти из - за его упаковывают в небольшой 18-контактный «пакет памяти», который исключил использование отдельной адресной шине (Intel был прежде всего ДОЗУ производителем в то время ).
Два года спустя, Intel запустила 8080 , [примечание 3] , использующее новые 40-контактный DIL пакеты , первоначально разработанные для калькулятора ИС для того, чтобы отдельная шины адреса. Он имеет расширенный набор команд, совместимый с исходным кодом (не двоичный ) с 8008 [5], а также включает некоторые 16-битные инструкции для упрощения программирования. 8080 устройство было в конечном итоге заменить на истощение нагрузки основанное 8085 (1977), который хватило с одним источником питания +5 В вместо трех различных рабочих напряжений предыдущих чипов. [примечание 4]Другие хорошо известные 8-битные микропроцессоры, появившиеся в эти годы, - это Motorola 6800 (1974), General Instrument PIC16X (1975), MOS Technology 6502 (1975), Zilog Z80 (1976) и Motorola 6809 (1978).
Первый проект x86 [ править ]
Проект 8086 стартовал в мае 1976 года и изначально задумывался как временная замена амбициозному и отложенному проекту iAPX 432 . Это была попытка привлечь внимание 16- и 32-разрядных процессоров других производителей (таких как Motorola , Zilog и National Semiconductor ) с меньшей задержкой и в то же время противостоять угрозе со стороны Zilog Z80 (разработанного бывшим Сотрудников Intel), которая стала очень успешной. Поэтому и архитектура, и физический чип были разработаны довольно быстро небольшой группой людей с использованием тех же основных элементов микроархитектуры и методов физической реализации, которые использовались для немного более старого 8085 (и для которого 8086 также будет функционировать как продолжение).
Реализован в качестве источника совместимой , [6] 8086 был разработан , чтобы позволить сборку языка для 8008 [ править ] , 8080, или 8085 , которые будут автоматически преобразуются в эквивалентные (субоптимальным) 8086 исходный код, практически без ручного редактирования. Модель программирования и набор команд (в общих чертах) основаны на 8080, чтобы сделать это возможным. Однако конструкция 8086 была расширена для поддержки полной 16-битной обработки вместо довольно ограниченных 8-битных возможностей 8080 и 8085.
Также были добавлены новые виды инструкций; Полная поддержка знаковых целых чисел, адресации по основанию + смещению и самоповторяющихся операций была сродни дизайну Z80 [7], но все они были сделаны немного более общими в 8086. Инструкции, непосредственно поддерживающие вложенные языки семейства ALGOL, такие как Pascal и PL / М были также добавлены. По словам главного архитектора Стивена П. Морса , это было результатом более ориентированного на программное обеспечение подхода, чем при проектировании более ранних процессоров Intel (разработчики имели опыт работы с реализациями компиляторов). Другие улучшения включают микрокодированиеинструкции умножения и деления, а также структура шины, лучше адаптированная для будущих сопроцессоров (таких как 8087 и 8089 ) и многопроцессорных систем.
Первая версия набора инструкций и архитектуры высокого уровня была готова примерно через три месяца [примечание 5], и, поскольку инструменты САПР почти не использовались, над микросхемой одновременно работали четыре инженера и 12 проектировщиков. [примечание 6] От идеи до рабочего продукта 8086 потребовалось чуть больше двух лет, что считалось довольно быстрым для сложной конструкции в 1976–1978 годах.
Последовательность 8086 была упорядочена [примечание 7] с использованием смеси случайной логики [8] и микрокода и была реализована с использованием схемы nMOS с истощающей нагрузкой с приблизительно 20 000 активных транзисторов (29 000, считая все участки ПЗУ и PLA ). Вскоре он был переведен на новый усовершенствованный производственный процесс nMOS, названный HMOS (для High performance MOS), который Intel первоначально разработал для производства продуктов быстрой статической RAM . [примечание 8] За этим последовали версии HMOS-II, HMOS-III и, в конечном итоге, полностью статическая версия CMOS для устройств с батарейным питанием, изготовленная с использованиемCHMOS процессы. [примечание 9] Размер оригинального чипа составлял 33 мм², а минимальный размер элемента - 3,2 мкм.
Архитектура была определена Стивеном П. Морсом с некоторой помощью и помощью Брюса Равенеля (архитектора 8087 года) в доработке окончательных версий. Дизайнер логики Джим МакКевитт и Джон Бейлисс были ведущими инженерами группы разработчиков аппаратного уровня [примечание 10], а Билл Полман - менеджером проекта. Наследие 8086 сохраняется в базовом наборе команд современных персональных компьютеров и серверов; 8086 также одолжил свои последние две цифры более поздним расширенным версиям дизайна, таким как Intel 286 и Intel 386 , которые в конечном итоге стали известны как семейство x86 . (Другая ссылка заключается в том, что идентификатор поставщика PCI для устройств Intel составляет 8086 ч..)
Подробности [ править ]
Автобусы и работа [ править ]
Все внутренние регистры, а также внутренняя и внешняя шины данных имеют ширину 16 бит, что четко определяет идентичность «16-битного микропроцессора» 8086. 20-битная внешняя адресная шина обеспечивает физическое адресное пространство размером 1 МБ (2 20 = 1 048 576). Адресное пространство адресуется посредством «сегментации» внутренней памяти. Шина данных мультиплексирована с адресной шиной, чтобы уместить все линии управления в стандартный 40-контактный двухрядный корпус . Он обеспечивает 16-битную адресную шину ввода / вывода, поддерживающую 64 КБотдельного пространства ввода / вывода. Максимальное линейное адресное пространство ограничено 64 КБ просто потому, что внутренние регистры адреса / индекса имеют ширину всего 16 бит. Программирование памяти размером более 64 КБ включает настройку сегментных регистров (см. Ниже); эта трудность существовала до тех пор, пока архитектура 80386 не представила более широкие (32-битные) регистры (аппаратное обеспечение управления памятью в 80286 не помогло в этом отношении, поскольку его регистры по-прежнему имеют ширину всего 16 бит).
Аппаратные режимы [ править ]
Некоторые из управляющих контактов, которые передают важные сигналы для всех внешних операций, имеют более одной функции в зависимости от того, работает ли устройство в минимальном или максимальном режиме. Первый режим предназначен для небольших однопроцессорных систем, а второй - для средних или больших систем, использующих более одного процессора (своего рода многопроцессорный режим). Максимальный режим требуется при использовании сопроцессора 8087 или 8089. Напряжение на контакте 33 (MN / MX ) определяет режим. Изменение состояния вывода 33 изменяет функцию некоторых других выводов, большая часть которых связана с тем, как ЦП обрабатывает (локальную) шину. [примечание 11]Этот режим обычно встроен в схему и поэтому не может быть изменен программно. Работа этих режимов описана в виде временных диаграмм в таблицах данных и руководствах Intel. В минимальном режиме все управляющие сигналы генерируются самим 8086.
Регистры и инструкции [ править ]
Регистры Intel 8086 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
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 size напрямую поддерживают « Соглашение о вызовах Паскаля ». (Некоторые другие, такие как и , были добавлены в последующие процессоры 80186, 80286 и 80386.)push mem-op
push immed
enter
Стек размером 64 КБ (один сегмент) , увеличивающийся в сторону младших адресов, поддерживается аппаратно ; 16-битные слова помещаются в стек, и на вершину стека указывает SS: SP. Имеется 256 прерываний , которые могут быть вызваны как аппаратными, так и программными средствами. Прерывания могут каскадироваться, используя стек для хранения адресов возврата .
8086 имеет 64 Кбайт 8-битного (или, альтернативно, 32 Кбайт 16-битного слова) пространства портов ввода / вывода .
Флаги [ править ]
8086 имеет 16-битный регистр флагов . Девять из этих флагов кода состояния активны и указывают текущее состояние процессора: флаг переноса (CF), флаг четности (PF), вспомогательный флаг переноса (AF), нулевой флаг (ZF), флаг подписи (SF), ловушка. флаг (TF), флаг прерывания (IF), флаг направления (DF) и флаг переполнения (OF). Регистр флагов, также называемый словом состояния, выглядит следующим образом: [9]
Кусочек | 15–12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Флаг | ИЗ | DF | ЕСЛИ | TF | SF | ZF | AF | ПФ | CF |
Сегментация [ править ]
Есть также четыре 16-битных сегментных регистра (см. Рисунок), которые позволяют процессору 8086 необычным образом получить доступ к одному мегабайту памяти. Вместо того, чтобы объединять сегментный регистр с адресным регистром, как в большинстве процессоров, адресное пространство которых превышает размер их регистра, 8086 сдвигает 16-битный сегмент только на четыре бита влево перед добавлением его к 16-битному смещению (16-битный сегмент + смещение ), таким образом создавая 20-битный внешний (или действующий, или физический) адрес из пары 32-битный сегмент: смещение. В результате на каждый внешний адрес может ссылаться 2 12 = 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-разрядного смещения, не касаясь части сегмента. адреса.
Чтобы избежать необходимости указывать near и far для многочисленных указателей, структур данных и функций, компиляторы также поддерживают «модели памяти», которые определяют размеры указателей по умолчанию. В крошечной (макс 64K), маленький ( не более 128К), компактные (данные> 64K), средний (код> 64K), большой (код, данные> 64K), и огромные (отдельные массивы> 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. Авторы большинства реализаций DOS воспользовались этим преимуществом, предоставив интерфейс прикладного программирования, очень похожий на 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 = ноль org 1000h ; Начало в 0000: 1000 ч._memcpy proc push bp ; Настроить кадр вызова mov bp , sp push es ; Сохранить ES mov cx , [ bp + 6 ] ; Установите CX = len jcxz done ; Если len = 0, вернуть mov si , [ bp + 4 ] ; Установить SI = src mov di , [ bp + 2 ] ; Установите DI = dst push ds ; Установить ES = DS pop esцикл mov al , [ si ] ; Загрузить AL из [src] mov [ di ], al ; Сохранить AL в [dst] inc si ; Увеличение src inc di ; Увеличение dst dec cx ; Уменьшить цикл len jnz ; Повторить циклсделано поп- эс ; Восстановить ES pop bp ; Восстановить предыдущий вызов фрейма sub ax , ax ; Установите AX = 0 ret ; Возврат в конец процесса |
В приведенном выше коде регистр BP (базовый указатель) используется для установления кадра вызова , области в стеке, которая содержит все параметры и локальные переменные для выполнения подпрограммы. Этот вид соглашения о вызовах поддерживает реентерабельный и рекурсивный код и используется в большинстве языков, подобных АЛГОЛу, с конца 1950-х годов.
Вышеупомянутая процедура представляет собой довольно громоздкий способ копирования блоков данных. 8086 предоставляет специальные инструкции для копирования строк байтов. Эти инструкции предполагают, что исходные данные хранятся в DS: SI, целевые данные хранятся в ES: DI, а количество копируемых элементов хранится в CX. Вышеупомянутая процедура требует, чтобы источник и блок назначения находились в одном сегменте, поэтому DS копируется в ES. Вышеупомянутый цикл цикла можно заменить на:
0000: 1011 ФК0000: 1012 F20000: 1013 A4 | cld ; Копировать в сторону более высоких адресов loop repnz ; Повторяйте, пока CX = 0 movsb ; Переместить блок данных |
Это копирует блок данных по одному байту за раз. REPNZ
Инструкция вызывает следующее MOVSB
повторить , пока CX не станет равным нулю, автоматически увеличивающийся SI и DI и декремента CX , как это повторяется. В качестве альтернативы MOVSW
инструкцию можно использовать для одновременного копирования 16-битных слов (двойных байтов) (в этом случае CX подсчитывает количество скопированных слов вместо количества байтов). Большинство ассемблеров правильно распознают REPNZ
инструкцию, если использовать ее в качестве встроенного префикса MOVSB
, например REPNZ MOVSB
.
Эта процедура будет работать правильно, если ее прервать, потому что счетчик программ будет продолжать указывать на REP
инструкцию, пока копирование блока не будет завершено. Таким образом, копирование будет продолжено с того места, где оно было остановлено, когда подпрограмма обработки прерывания вернет управление.
Производительность [ править ]
Хотя мультиплексированные шины адреса и данных частично затмеваются другими конструктивными решениями в этом конкретном чипе, производительность немного ограничивается; Передача 16-битных или 8-битных величин выполняется в четырехтактном цикле доступа к памяти, который быстрее для 16-битных, хотя и медленнее для 8-битных величин, по сравнению со многими современными 8-битными процессорами. Поскольку размер инструкций составляет от одного до шести байтов, выборка и выполнение выполняются одновременно и разделяются на отдельные блоки (как и в современных процессорах x86): блок интерфейса шины передает поток инструкций блоку выполнения через 6-байтовую очередь предварительной выборки ( форма слабосвязанной конвейеризации ), ускоряющая операции надрегистры и немедленно , в то время как операции с памятью стали медленнее (четыре года спустя эта проблема с производительностью была исправлена в 80186 и 80286 ). Однако полная (вместо частичной) 16-битная архитектура с ALU полной ширины означала, что 16-битные арифметические инструкции теперь могут выполняться за один цикл ALU (вместо двух, через внутренний перенос, как в 8080 и 8085). , значительно ускоряя выполнение таких инструкций. В сочетании с ортогонализацией операций по сравнению с типами операндов и режимами адресации, а также другие улучшения, это сделало прирост производительности по сравнению с 8080 или 8085 довольно значительным, несмотря на случаи, когда старые чипы могут быть быстрее (см. ниже).
инструкция | регистр-регистр | зарегистрироваться немедленно | регистр-память | регистр памяти | немедленная память |
---|---|---|---|---|---|
mov | 2 | 4 | 8 + EA | 9 + EA | 10 + EA |
ALU | 3 | 4 | 9 + 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 - е годы) для встраиваемых систем , хотя его преемник, 80 186 / 80 188 (который включает в себя некоторые на чипе периферийных устройств), был более популярным для встроенного использования .
80C86, КМОП-версия 8086, использовалась в GRiDPad , Toshiba T1200 , HP 110 и, наконец, в Lunar Prospector 1998–1999 гг .
Что касается упаковки, Intel 8086 был доступен как в керамическом, так и в пластиковом корпусе DIP.
Список Intel 8086 [ править ]
Номер модели | Частота | Технологии | Диапазон температур | Дата выпуска | Цена (долл. США) [list2 1] |
---|---|---|---|---|---|
8086 | 5 МГц [13] | HMOS | От 0 ° C до 70 ° C [14] | 8 июня 1978 г. [15] | 86,65 долл. США [16] |
8086-1 | 10 МГц | HMOS II | Коммерческий | ||
8086-2 | 8 МГц [13] | HMOS II | Коммерческий | Январь / февраль 1980 г. [17] | 200 долларов США [17] [18] |
8086-4 | 4 МГц [13] | HMOS | Коммерческий | 72,50 долл. США [list2 2] [19] | |
I8086 | 5 МГц | HMOS | Промышленный от –40 ° C до +85 ° C [14] | Май / июнь 1980 г. [14] | 173,25 долл. США [14] |
M8086 | 5 МГц | HMOS | Военный класс от –55 ° C до +125 ° C [20] |
- ^ В количестве 100 шт.
- ^ Цена снижена на 21% с 99,00 долларов США, количественная информация не указана.
Производные и клоны [ править ]
Совместимые - и, во многих случаях, усовершенствованные - версии производились Fujitsu , Harris / Intersil , OKI , Siemens AG , Texas Instruments , NEC , Mitsubishi и AMD . Например, NEC V20 и NEC V30пара была аппаратно совместима с 8088 и 8086, хотя NEC сделала оригинальные клоны Intel μPD8088D и μPD8086D соответственно, но включала набор инструкций 80186 вместе с некоторыми (но не всеми) улучшениями скорости 80186, обеспечивая возможность подключения для повышения как набора команд, так и скорости обработки без необходимости изменения производителями своих конструкций. Такие относительно простые и маломощные 8086-совместимые процессоры в CMOS до сих пор используются во встроенных системах.
Электронная промышленность Советского Союза смогла воспроизвести 8086 как с помощью промышленного шпионажа, так и с помощью обратной инженерии [ цитата необходима ] . Получившийся чип, K1810VM86 , был двоичным и совместимым по выводам с 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 г.).
Фишки поддержки [ править ]
- 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 8 286 / 8 287 : двунаправленный драйвер 8-бит. В 1980 году обе версии Intel I8286 / I8287 (промышленного уровня) были доступны по цене 16,25 долларов США в количестве 100 штук [14].
- Intel 8288 : контроллер шины
- Intel 8289 : арбитр шины
- NEC µPD765 или Intel 8272A : контроллер гибких дисков [21]
Микрокомпьютеры, использующие 8086 [ править ]
- Одноплатный компьютер ISBC 86/12, совместимый с Intel Multibus, был анонсирован в 1978 г. [22]
- Xerox NoteTaker был один из самых ранних портативных компьютерных проектов в 1978 году и использовал три 8086 чипов (как центральный процессор, графический процессор, и I / O процессор), но никогда не входил коммерческое производства.
- Seattle Computer Products поставляется S-100 автобусов на базе 8086 систем (SCP200B) уже в ноябре 1979 года.
- Норвежский Mycron 2000, представленный в 1980 году.
- Один из самых влиятельных микрокомпьютеров, IBM PC , использовал Intel 8088 , версию 8086 с 8-битной шиной данных (как упоминалось выше).
- Первый Compaq Deskpro использовал 8086, работающий на частоте 7,16 МГц, но был совместим с картами расширения, разработанными для IBM PC XT с частотой 4,77 МГц, и мог переключать ЦП на более низкую скорость (что также переключалось в буфер шины памяти для имитации 8088 медленный доступ), чтобы избежать проблем с синхронизацией программного обеспечения.
- 8086-2 8 МГц использовался в ПК 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.
- Amstrad / Schneider PC1512 , PC1640 , PC2086, PC3086 и PC5086 все использовали процессоры 8086 с частотой 8 МГц.
- NEC PC-9801 .
- В машинах Tandy 1000 SL и RL использовались процессоры 8086 с тактовой частотой 9,47 МГц.
- Машина для обработки текстов IBM Displaywriter [23] и профессиональный компьютер Wang, производимые Wang Laboratories , также использовали 8086.
- НАСА использовало оригинальные процессоры 8086 в оборудовании для наземного обслуживания космического шаттла Discovery до завершения программы космических шаттлов в 2011 году. Это решение было принято для предотвращения регресса программного обеспечения, которое могло возникнуть в результате обновления или перехода на несовершенные клоны. [24]
- КАМАН технологические и территориальные радиационные мониторы [25]
См. Также [ править ]
- Количество транзисторов
- iAPX , для имени iAPX
Примечания [ править ]
- ^ Меньшее количество буферов TTL, защелок, мультиплексоров (хотя объем логики TTLне был значительно уменьшен). Это также позволяет использовать дешевые ИС семейства 8080, где вконструкции IBM PC использовались8254 CTC, 8255 PIO и 8259 PIC. Кроме того, это упрощает разводку печатных плат и удешевляет платы, а также требует меньшего количества микросхем DRAM (шириной 1 или 4 бита).
- ^ с использованием логики PMOS с расширенной нагрузкой(требуется 14 В , совместимость TTL достигается за счет наличия V CC при +5 В и V DD при –9 В).
- ^ Использование ненасыщенной логики NMOS расширения нагрузки(требующей более высокого напряжения затвора для затворов транзистора нагрузки).
- ^ Это стало возможным благодаря логике nMOS с истощающей нагрузкой (позже 8085 был создан с использованием обработки HMOS, как и 8086).
- ^ Ред.0 набора команд и архитектуры был готов примернотри месяца,соответствии с Морзе.
- ^ Использование рубилита , световых досок, линейок , электрических ластиков и дигитайзера (по словам Дженни Эрнандес, члена команды разработчиков 8086, в заявлении, сделанном на веб-странице Intel в связи с ее 25-летием).
- ^ 8086 использовал меньше микрокода, чем конструкции многих конкурентов, таких как MC68000 и другие.
- ^ Быстрые статические RAM в технологии MOS (такие же быстрые, как биполярные RAM) были важным продуктом для Intel в этот период.
- ^ CHMOS - это название Intel для схем CMOS, изготовленных с использованием этапов обработки, очень похожих на HMOS .
- ^ Другие члены проектной группы были Питер и Дженни A.Stoll Эрнандеса.
- ^ IBM PC и PC / XT используют Intel 8088, работающий в максимальном режиме, что позволяет процессору работать с дополнительным сопроцессором 8087, установленным в разъем математического сопроцессора на ПК или материнской плате PC / XT. (Для ПК и ПК / XT может потребоваться максимальный режим по другим причинам, например, для поддержки контроллера DMA.)
- ^ Некоторые клоны 80186 действительно изменили значение сдвига, но обычно никогда не использовались в настольных компьютерах.
- ^ (IBM PC использовал 4,77 МГц, 4/3 стандартнойчастоты цветовой синхронизации NTSC)
Ссылки [ править ]
- ^ История ЦП - Музей ЦП - Жизненный цикл ЦП .
- ^ "Зал славы микропроцессоров" . Intel. Архивировано из оригинала на 2007-07-06 . Проверено 11 августа 2007 .
- ^ Справочник программиста iAPX 286 (PDF) . Intel. 1983. с. 1-1.
- ^ a b «С Днем Рождения, 8086: ограниченная серия Intel Core i7-8086K 8-го поколения обеспечивает лучший игровой опыт» . Intel.
- ^ "8080 семья" . CPU World .
- ^ Скэнлон, Лео Дж. (1988). 8086/8088/80286 ассемблер . Брейди Букс. п. 12 . ISBN 978-0-13-246919-7.
[…] 8086 программно совместим с 8080 на уровне языка ассемблера. […]
- ^ «Рождение стандарта: микропроцессор Intel 8086. Тридцать лет назад Intel выпустила процессор 8086, представив архитектуру x86, которая лежит в основе каждого ПК - Windows, Mac или Linux - производимого сегодня» . Мир ПК . 17 июня 2008 г.
- ^ Гейгер, Рэндалл Л .; Аллен, Филипп Э .; Strader, Ноэль Р. (1990). «Случайная логика против структурированных логических форм». Методы проектирования СБИС для аналоговых и цифровых схем . Макгроу-Хилл. п. 779. ISBN 0-07-023253-9. - Иллюстрация использования "случайного" описания логики управления ЦП
- ^ Intel Corporation (1983). Руководство пользователя IAPX 86, 88, 186 и 188: справочник программиста . С. 3–5. ISBN 978-0835930352. OCLC 11091251 .
- ^ Морс, Стивен П .; Равенел, Брюс В.; Мазор, Стэнли; Полман, Уильям Б. (октябрь 1980 г.). «Микропроцессоры Intel: от 8008 до 8086» . Компьютер IEEE . 13 (10): 42–60. DOI : 10,1109 / MC.1980.1653375 . S2CID 206445851 .
- ^ a b c Осборн, Адам; Кейн, Джерри (1981). Руководство по 16-битному процессору Osborne . С. 5–26. ISBN 0-931988-43-8.
- ^ Справочное руководство Microsoft Macro Assembler 5.0 . Корпорация Майкрософт. 1987.
Время и кодировки в этом руководстве используются с разрешения Intel и взяты из следующих публикаций: Intel Corporation.
Руководство пользователя iAPX 86, 88, 186 и 188, Справочник программиста, Санта-Клара, Калифорния, 1986.
(Аналогично для iAPX 286, 80386, 80387.) - ^ a b c Руководство пользователя семейства 8086 . Корпорация Intel. Октябрь 1979. с. Б-1. OCLC 65699372 .
- ^ a b c d e Корпорация Intel (май – июнь 1980 г.). «8086 Доступно для промышленных предприятий». Предварительная версия Intel (специальный выпуск: 16-разрядные решения): 29.
- ^ Просмотр процессоров в хронологическом порядке по дате внедрения:
- ↑ Intel Corporation (май – июнь 1980 г.). «Семья 8086: концепции и реалии». Предварительная версия Intel (специальный выпуск: 16-разрядные решения): 19.
- ^ a b Корпорация Intel (январь – февраль 1980 г.). «Новые продукты: Faster 8086 обеспечивает на 60% больше производительности». Предварительная версия Intel : 22.
- ↑ Intel Corporation (май – июнь 1980 г.). «Новые продукты семейства 8086 повышают производительность процессора на 50 процентов». Предварительная версия Intel (специальный выпуск: 16-разрядные решения): 17.
- ↑ Intel Corporation (май – июнь 1979 г.). «Компоненты микрокомпьютера: новое снижение цен и усовершенствование производства делают популярный микропроцессор 8086 еще более привлекательным». Предварительная версия Intel : 11.
- ^ Intel Corporation (август 1981 г.). Intel iAPX86, 88 Руководство пользователя . п. В-25. ISBN 0835930165. OCLC 8459750 .
- ^ "Эволюция контроллера гибких дисков | Музей OS / 2" . 2011-05-26 . Проверено 12 мая 2016 .
В исходных IBM PC (1981) и PC / XT (1983) FDC физически располагался на отдельной плате адаптера дискеты.
Сам FDC был NEC µPD765A или совместимой частью, например Intel 8272A.
- ↑ Enterprise, IDG (11 декабря 1978 г.). «Intel добавляет 16-битную одноплатную плату» . Компьютерный мир . XII (50): 86. ISSN 0010-4841 .
- ^ Захман, Марк (23 августа 1982). «Недостатки персонального компьютера IBM расстраивают критиков» . InfoWorld . 4 (33): 57–58. ISSN 0199-6649 .
IBM Displaywriter заметно дороже, чем другие промышленные микросхемы, использующие 8086.
- ^ «Что касается старых деталей, НАСА смело идет ... на eBay» . Нью-Йорк Таймс . 12 мая 2002 г.
- ^ Kaman Tech. Руководство
Внешние ссылки [ править ]
Викискладе есть медиафайлы по теме Intel 8086 . |
- Таблицы данных Intel
- Список процессоров 8086 и их клонов на CPUworld.com
- Распиновка 8086
- Интерфейс максимального режима
- Руководство пользователя 8086 Октябрь 1979 г. Корпорация INTEL ( документ в формате PDF )
- Программные коды 8086 с использованием эмулятора emu8086 (версия 4.08)
- Эмулятор Intel 8086/80186, написанный на C, этот файл является частью более крупного эмулятора ПК.
- Ширрифф, Кен (июнь 2020 г.). «Посмотрите на кристалл процессора 8086» .
- - (июнь 2020 г.). «Уменьшение размера кристалла: как Intel сократила процессор 8086» .
- - (июль 2020 г.). «Регистры процессора Intel 8086: от микросхемы до транзисторов» .
- - (август 2020 г.). «Обратный инжиниринг сумматора внутри Intel 8086» .
- - (август 2020 г.). «Обратный инжиниринг арифметико-логического устройства 8086 по фотографиям кристалла» .