Jump to content

Интел 8087

Интел 8087
Общая информация
Запущен 1980 год ; 44 года назад ( 1980 )
Снято с производства 28 сентября 2007 г .; 16 лет назад ( 28 сентября 2007 ) [1]
Продается через Интел , ИБМ [2]
Разработано Интел
Общие производители
Производительность
Макс. процессора Тактовая частота от 4 МГц до 10 МГц
Архитектура и классификация
Технологический узел 4,5->3 мкм
Набор инструкций x87 ( сопроцессора расширение x86-16 )
Физические характеристики
Транзисторы
  • 65000
Упаковка
История
Предшественник 8231/8232
Преемник 80287

Intel 8087 , анонсированный в 1980 году, был первым с плавающей запятой сопроцессором для 8086 . линейки микропроцессоров [5] [6] [7] Целью чипа было ускорение арифметических операций с плавающей запятой , таких как сложение , вычитание , умножение , деление и извлечение квадратного корня . Он также вычисляет трансцендентные функции, такие как экспоненциальные , логарифмические или тригонометрические вычисления. Повышение производительности составило примерно от 20% до более 500%, в зависимости от конкретного приложения. 8087 мог выполнять около 50 000 FLOPS. [6] потребляет около 2,4 Вт. [7]

Intel 8087

8087 представлял собой передовую интегральную схему, раздвигающую границы производственных технологий того периода. [ нужна ссылка ] Базовые операции на 8087, такие как сложение и вычитание, могут выполняться более 100 машинных циклов, а некоторые инструкции превышают 1000 циклов. [8] Чип лишен аппаратного умножителя и осуществляет вычисления по алгоритму CORDIC . [9]

Продажи 8087 значительно возросли, когда разъем для сопроцессора был включен в материнскую плату IBM PC 1981 года . Разработка 8087 привела к созданию стандарта IEEE 754-1985 для арифметики с плавающей запятой. Доступные версии скорости составляли 4,77 (5), 8 и 10 МГц. [10] Позже появились x87 сопроцессоры для процессоров 80186 , 80286 , 80386 и 80386SX . Начиная с 80486 , более поздние процессоры Intel x86 не использовали отдельный сопроцессор с плавающей запятой; функции с плавающей запятой были интегрированы в процессор.

Intel 80186 и связанные с ним продукты были сняты с производства 30 марта 2007 г. для заказов и 28 сентября 2007 г. для поставок. [11]

Варианты [ править ]

Номер модели [12] Частота Название модели (ДОЛЛАР США) [список 1]
8087 5 МГц КОРОБКА8087 $142
8087-2 8 МГц КОРОБКА8087-2 $205
8087-1 10 МГц КОРОБКА8087-1 $270
  1. ^ Рекомендуемая цена за единицу

Дизайн и разработка [ править ]

Ранее Intel производила 8231 арифметический процессор и 8232 процессор с плавающей запятой . Они были разработаны для использования с процессорами 8080 или аналогичными и использовали 8-битную шину данных. Они были подключены к хост-системе либо через программируемый ввод-вывод, либо через контроллер DMA . [13]

Первоначально 8087 был задуман Биллом Полманом, техническим менеджером Intel, который курировал разработку чипа 8086. Билл предпринял шаги, чтобы убедиться, что чип 8086 сможет поддерживать еще не разработанный математический чип.

В 1977 году Полман получил разрешение на разработку математического чипа 8087. Брюс Рэвенел был назначен архитектором, а Джон Палмер был нанят соавтором проекта и математиком. Они разработали революционный дизайн с 64 битами мантиссы и 16 битами экспоненты для действительного числа самого длинного формата, со стековой архитектурой ЦП и восемью 80-битными стековыми регистрами, а также с богатым в вычислительном отношении набором команд. Эта конструкция решила несколько выдающихся известных проблем в числовых вычислениях и числовом программном обеспечении: проблемы ошибок округления были устранены для 64-битных операндов, а преобразования числовых режимов были решены для всех 64-битных чисел. Палмер отметил, что работы Уильяма Кахана о плавающей запятой оказали значительное влияние на их дизайн. [14]

Дизайн 8087 изначально был встречен прохладно в Санта-Кларе из-за своего агрессивного дизайна. В конце концов, разработка была поручена Intel Israel, а Рафи Нейву было поручено возглавить внедрение чипа. Палмер, Равенел и Нэйв получили патенты на этот дизайн. [15] Роберт Келер и Джон Бэйлисс также получили патент на метод, при котором некоторые инструкции с определенной битовой комбинацией выгружались в сопроцессор. [16]

8087 имел 65 000 транзисторов и был изготовлен по схеме HMOS с истощающей нагрузкой толщиной 4,5 мкм (затем уменьшенной до 3 мкм) . Он работал в тандеме с 8086 или 8088 и представил около 60 новых инструкций . ассемблера 8087 Большинство мнемоник начинаются с буквы F, например FADD, FMUL, FCOM и т. д., что позволяет легко отличить их от инструкций 8086. Двоичные кодировки для всех инструкций 8087 начинаются с битовой комбинации 11011, десятичной 27, такой же, как символ ASCII ESC, но в битах более высокого порядка байта; подобные префиксы команд также иногда называют « эскейп-кодами ». Мнемоника инструкций, назначенная Intel для этих инструкций сопроцессора, — «ESC». Модель 8087 была дорогой, сложной в производстве и с низкой производительностью. Он также сильно нагревался, что вынудило Intel использовать более дорогой керамический корпус для улучшения рассеивания тепла.

Когда ЦП 8086 или 8088 выполнял команду ESC, и если второй байт (байт ModR/M) задавал операнд памяти, ЦП выполнял цикл шины для чтения одного слова из ячейки памяти, указанной в инструкции (с использованием любого 8086). режим адресации), но он не будет сохранять прочитанный операнд в каком-либо регистре ЦП или выполнять над ним какие-либо операции; 8087 будет наблюдать за шиной и декодировать поток команд синхронно с 8086, распознавая инструкции сопроцессора, предназначенные для него самого. Для инструкции 8087 с операндом памяти, если инструкция требует чтения операнда, 8087 будет брать слово данных, считанное основным ЦП, из шины данных. Если считываемый операнд был длиннее одного слова, 8087 также скопировал бы адрес из адресной шины; затем, после завершения цикла чтения данных, управляемого ЦП, 8087 немедленно использует DMA, чтобы взять на себя управление шиной и передать дополнительные байты самого операнда. Если инструкция 8087 с операндом в памяти требует записи этого операнда, 8087 проигнорирует прочитанное слово на шине данных и просто скопирует адрес, затем запросит DMA и запишет весь операнд так же, как он бы прочитал конец расширенного операнда. Таким образом, главный ЦП сохранял общий контроль над шиной и синхронизацией шины, в то время как 8087 обрабатывал все остальные аспекты выполнения инструкций сопроцессора, за исключением коротких периодов DMA, когда 8087 брал на себя управление шиной для чтения или записи операндов в / из своих внутренних реестров. В результате такой конструкции 8087 мог работать только с операндами, взятыми либо из памяти, либо из его собственных регистров, и любой обмен данными между 8087 и 8086 или 8088 осуществлялся только через ОЗУ.

Основная программа ЦП продолжала выполняться, пока 8087 выполнял инструкцию; с точки зрения основного ЦП 8086 или 8088, инструкция сопроцессора занимала столько же времени, сколько обработка кода операции и любого цикла операнда памяти (2 тактовых цикла при отсутствии операнда, 8 тактовых циклов плюс время расчета EA [от 5 до 12 тактов) циклов] для операнда памяти [плюс еще 4 такта на 8088] для передачи второго байта слова операнда), после чего ЦП начнет выполнять следующую инструкцию программы. Таким образом, система с 8087 была способна к настоящей параллельной обработке, выполняя одну операцию в целочисленном АЛУ основного ЦП и в то же время выполняя операцию с плавающей запятой в сопроцессоре 8087. Поскольку 8086 или 8088 контролировали исключительно поток и синхронизацию команд и не имели прямого доступа к внутреннему состоянию 8087, а также поскольку 8087 мог выполнять только одну инструкцию за раз, программы для объединенной системы 8086/8087 или 8088/8087 должен был гарантировать, что 8087 успеет выполнить последнюю выданную ему команду, прежде чем ему будет выдана следующая. Для этой цели была предусмотрена инструкция WAIT (основного ЦП), и большинство ассемблеров неявно вводили инструкцию WAIT перед каждым экземпляром большинства инструкций сопроцессора с плавающей запятой. (Нет необходимости использовать инструкцию WAIT перед операцией 8087, если программа использует другие средства, чтобы гарантировать, что между выдачей чувствительных к времени инструкций 8087 проходит достаточно времени, чтобы 8087 никогда не мог получить такую ​​​​инструкцию, пока не завершит предыдущую операцию. Также не обязательно, если используется WAIT, чтобы он непосредственно предшествовал следующей инструкции 8087.) Инструкция WAIT ожидала установления входного контакта -TEST 8086/8088 (низкий уровень), и этот вывод был установлен. подключен к контакту BUSY 8087 во всех системах, в которых был 8087 (поэтому TEST был подтвержден, когда сигнал BUSY был снят).

Поскольку очереди предварительной выборки инструкций в 8086 и 8088 делают время выполнения инструкции не всегда таким же, как время ее выборки, сопроцессор, такой как 8087, не может определить, когда инструкция для него является следующей инструкцией, которая будет выполнена чисто наблюдая за шиной ЦП. У 8086 и 8088 есть два сигнала состояния очереди, подключенные к сопроцессору, чтобы позволить ему синхронизироваться с внутренним временем процессора при выполнении инструкций из его очереди предварительной выборки. 8087 поддерживает свою собственную идентичную очередь предварительной выборки, из которой он считывает коды операций сопроцессора, которые он фактически выполняет. Поскольку очереди предварительной выборки 8086 и 8088 имеют разные размеры и разные алгоритмы управления, 8087 определяет, к какому типу ЦП он подключен, наблюдая за определенной линией шины ЦП при перезагрузке системы, и 8087 соответствующим образом корректирует свою внутреннюю очередь инструкций. Избыточное дублирование оборудования очереди предварительной выборки в ЦП и сопроцессоре неэффективно с точки зрения энергопотребления и общей площади кристалла, но оно позволяло интерфейсу сопроцессора использовать очень мало выделенных выводов микросхемы, что было важно. В то время, когда был представлен 8086, определявший интерфейс сопроцессора, корпуса микросхем с числом контактов более 40 были редки, дороги и страдали от таких проблем, как чрезмерная емкость выводов, основного фактора, ограничивающего скорость передачи сигналов.

Коды операций сопроцессора кодируются 6 битами по 2 байта, начиная с escape-последовательности:

 ┌───────────┬───────────┐
 │ 1101 1xxx │ mmxx xrrr │
 └───────────┴───────────┘

Первые три бита «x» — это первые три бита кода операции с плавающей запятой. Затем два бита «m», затем вторая половина трех битов кода операции с плавающей запятой, а затем три бита «r». Биты «m» и «r» определяют информацию о режиме адресации. [17]

Прикладные программы должны были быть написаны с использованием специальных инструкций с плавающей запятой. Во время выполнения программное обеспечение могло обнаружить сопроцессор и использовать его для операций с плавающей запятой. При обнаружении отсутствия аналогичные функции с плавающей запятой приходилось рассчитывать в программном обеспечении или весь сопроцессор можно было эмулировать в программном обеспечении для более точной числовой совместимости. [18]

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

Упрощенная микроархитектура 8087.

Семейство x87 не использует набор регистров с прямой адресацией , такой как основные регистры процессоров x86; вместо этого регистры x87 образуют восьмиуровневую с глубоким стеком. структуру [19] от st0 до st7, где st0 — верх. Инструкции x87 работают, помещая, вычисляя и извлекая значения из этого стека. Однако диадические операции, такие как FADD, FMUL, FCMP и т. д., могут либо неявно использовать самые верхние значения st0 и st1, либо могут использовать st0 вместе с явным операндом или регистром памяти; Таким образом, регистр st0 может использоваться в качестве аккумулятора (т.е. как комбинированный адрес назначения и левый операнд), а также может быть заменен любым из восьми регистров стека с помощью инструкции под названием FXCH st X (коды D9C8–D9CF h ). Это позволяет использовать стек x87 в качестве семи свободно адресуемых регистров и аккумулятора. Это особенно применимо к суперскалярным процессорам x86 ( Pentium 1993 года и новее), где эти инструкции обмена оптимизированы до потери тактовой частоты.

Стандарт IEEE с плавающей запятой [ править ]

Когда Intel разрабатывала 8087, она стремилась создать стандартный формат чисел с плавающей запятой для будущих разработок. Важным аспектом 8087 с исторической точки зрения было то, что он стал основой IEEE 754 стандарта вычислений с плавающей запятой . 8087 не реализовал будущий стандарт IEEE 754 во всех его деталях, поскольку стандарт был завершен только в 1985 году, а 80387 это сделал. 8087 предоставлял два основных 32 / 64-битных типа данных с плавающей запятой и дополнительный расширенный 80-битный внутренний временный формат (который также мог храниться в памяти) для повышения точности больших и сложных вычислений. Помимо этого, 8087 предлагал 80-битный/18-разрядный упакованный формат BCD ( двоично-десятичный формат ) и 16-, 32- и 64-битные целочисленные типы данных. [19]

8087 типов данных
7 9 ... 7 1 ... 6 7 ... 6 3 ... 5 0 ... 3 1 ... 2 2 ... 1 5 ... 0 0 (битовая позиция)
± Экспонента Фракция Реальный 80-битный расширенной точности
± Экспонента Фракция 64-битное вещественное число двойной точности
± Экспонента Фракция 32-битное вещественное число одинарной точности
± BCD целое число 18-значное десятичное целое число
± Целое число 64-битное двоичное целое число
± Целое число 32-битное двоичное целое число
± Целое число 16-битное двоичное целое число

Бесконечность [ править ]

8087 обрабатывает значения бесконечности либо с помощью аффинного замыкания , либо с помощью проективного замыкания (выбирается регистром состояния). При аффинном замыкании положительная и отрицательная бесконечности рассматриваются как разные значения. При проективном замыкании бесконечность рассматривается как беззнаковое представление очень маленьких или очень больших чисел. [20] Эти два метода обработки бесконечности были включены в черновую версию стандарта IEEE 754 с плавающей запятой. Однако проективное замыкание ( проективно расширенная система действительных чисел ) было исключено из более позднего официального выпуска IEEE 754-1985. 80287 сохранил проективное замыкание в качестве опции, но 80387 и последующие процессоры с плавающей запятой (включая 80187) поддерживали только аффинное замыкание.

Интерфейс сопроцессора [ править ]

8087 отличался от последующих сопроцессоров Intel тем, что он был напрямую подключен к шинам адреса и данных. 8087 искал инструкции, начинающиеся с последовательности «11011», и действовал на них, немедленно запрашивая DMA у основного ЦП, если это необходимо для доступа к операндам памяти длиной более одного слова (16 бит), а затем немедленно возвращая управление шиной обратно основному ЦП. . Сопроцессор не приостанавливал выполнение программы до завершения инструкции сопроцессора, и программа должна была явно синхронизировать два процессора, как объяснялось выше (в разделе « Проектирование и разработка »). Возникала потенциальная проблема со сбоем, если инструкцию сопроцессора не удалось декодировать в ту, которую понимал сопроцессор. Более поздние сопроцессоры Intel не подключались к шинам таким же образом, а получали инструкции через порты ввода-вывода основного процессора. Это привело к увеличению времени выполнения, но потенциальной проблемы сбоя удалось избежать, поскольку основной процессор игнорировал инструкцию, если сопроцессор отказывался ее принять. 8087 смог определить, подключен ли он к 8088 или 8086, путем мониторинга шины данных во время цикла сброса.

Теоретически 8087 мог работать одновременно, пока 8086/8 обрабатывал дополнительные инструкции. На практике существовала вероятность сбоя программы, если сопроцессор выдал новую инструкцию до завершения предыдущей. Ассемблер автоматически вставлял инструкцию FWAIT после каждого кода операции сопроцессора, заставляя 8086/8 останавливать выполнение до тех пор, пока 8087 не подаст сигнал о завершении. [21] Это ограничение было снято в более поздних разработках.

Преемники [ править ]

Как процессоры 8088 и 8086 были заменены более поздними моделями, так и процессор 8087 был заменен. Другими сопроцессорами Intel были 80287 (на самом деле — 80C287 , поскольку Intel к тому времени перешла на CMOS-процесс), 80387 и 80187 . Начиная с 80486, в более поздних процессорах Intel не использовался отдельный сопроцессор с плавающей запятой; практически все они включали его в кристалл основного процессора, за существенным исключением 80486SX, который представлял собой модифицированную версию 80486DX с отключенным FPU. 80487 на самом деле представлял собой полноценную микросхему 80486DX с дополнительным выводом. При установке он отключил процессор 80486SX. Процессоры 80486DX , Pentium и более поздних версий включают в себя функциональность вычислений с плавающей запятой в ядре ЦП.

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

  1. ^ «Уведомление об изменении продукта» (PDF) . 2 мая 2006 г. Архивировано из оригинала (PDF) 9 октября 2006 г.
  2. ^ Швец, Геннадий (8 октября 2011 г.). «Блок вычислений с плавающей запятой IBM 8087» . Мир процессоров . Проверено 1 декабря 2011 г.
  3. ^ Швец, Геннадий (8 октября 2011 г.). «Единица операций с плавающей запятой AMD 8087» . Мир процессоров . Проверено 1 декабря 2011 г.
  4. ^ Швец, Геннадий (8 октября 2011 г.). «Блок вычислений с плавающей запятой Cyrix 8087» . Мир процессоров . Проверено 1 декабря 2011 г.
  5. ^ Палмер, Джон Ф. (1980). «Процессор числовых данных INTEL® 8087» (PDF) . AFIPS '80, Материалы Национальной компьютерной конференции, 19–22 мая 1980 г. Анахайм, Калифорния: ACM. стр. 887–893. дои : 10.1145/1500518.1500674 .
  6. Перейти обратно: Перейти обратно: а б «8087» . Информация о точке сопроцессора . 2007. Архивировано из оригинала 30 сентября 2011 года . Проверено 1 декабря 2011 г.
  7. Перейти обратно: Перейти обратно: а б «Интел ФПУ» . cpu-collection.de . 2011 . Проверено 1 декабря 2011 г.
  8. ^ «Техническое описание Intel 8087» .
  9. ^ Ширрифф, Кен (май 2020 г.). «Извлечение констант ПЗУ из кристалла математического сопроцессора 8087» . righto.com . Самостоятельная публикация Кена Ширриффа . Проверено 3 сентября 2020 г. ПЗУ содержит 16 значений арктангенсов, арктангенсы 2 -n . Он также содержит 14 значений журнала, журналы по основанию 2 (1+2). -n ). Эти значения могут показаться необычными, но они используются в эффективном алгоритме CORDIC, изобретенном в 1958 году.
  10. ^ Йошида, Стейси, «Математические сопроцессоры: поддержание работоспособности вашего компьютера», корпорация Intel, Microcomputer Solutions, сентябрь/октябрь 1990 г., стр. 16
  11. ^ «Уведомление об изменении продукта» (PDF) . 2 мая 2006 г. Архивировано из оригинала (PDF) 9 октября 2006 г.
  12. ^ Корпорация Intel, «Прейскурант продуктов Intel для улучшения персональных компьютеров, вступающий в силу с 1 ноября 1989 г.», «Операция по усовершенствованию персональных компьютеров», номер заказа 245.2, 10-89/75K/AL/GO, октябрь 1989 г.
  13. ^ Intel Каталог данных компонентов , 1980 г. , номер каталога Intel. C-864/280/150K/CP, стр. 8–21, 8–28.
  14. ^ Санчес и Кантон 2007 , с. 96.
  15. ^ US 4484259 , «Дробная шина для использования в процессоре числовых данных».  
  16. ^ US 4270167 , «Схема синхронизации дуплексного центрального процессора».  
  17. ^ Лемон, Карен А. (1985). Язык ассемблера и системное программирование для IBM PC и совместимых устройств . Маленький Браун. п. 302. ИСБН  978-0-316-52069-0 .
  18. ^ Мюллер, Скотт (1992). Модернизация и ремонт компьютеров (2-е изд.). Que. стр. 395–403. ISBN  0-88022-856-3 .
  19. Перейти обратно: Перейти обратно: а б Швец, Геннадий (8 октября 2011 г.). «Семейство Intel 8087» . Мир процессоров . Проверено 1 декабря 2011 г.
  20. ^ Санчес и Кантон 2007 , с. 110.
  21. ^ Лимон 1985 , с. 300

Библиография [ править ]

  • Санчес, Хулио; Кантон, Мария П. (2007). Программные решения для инженеров и ученых . ЦРК Пресс. ISBN  978-1-4200-4302-0 .

Внешние ссылки [ править ]

Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 412df1dc387fb681d3aee7df82cfeb06__1717376700
URL1:https://arc.ask3.ru/arc/aa/41/06/412df1dc387fb681d3aee7df82cfeb06.html
Заголовок, (Title) документа по адресу, URL1:
Intel 8087 - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)