Открыть сервис

Intel 8087

Intel 8087 — это первый математический сопроцессор (числовой сопроцессор) для микропроцессоров семейства x86, разработанный и выпущенный корпорацией Intel в 1980 году. Он предназначался для расширения вычислительных возможностей центрального процессора (ЦП) за счёт аппаратной реализации операций с плавающей запятой, тригонометрических, логарифмических и других сложных математических функций. Чип относился к классу специализированных интегральных схем, работающих в паре с основным процессором и выполняющих ресурсоёмкие вычисления параллельно с ним.

История создания

Предпосылки

В конце 1970-х годов микропроцессоры общего назначения, такие как Intel 8086/8088, имели ограниченные возможности для работы с числами с плавающей запятой. Выполнение операций умножения, деления или извлечения корня требовало десятков и сотен тактов, а реализация тригонометрических функций — сотен строк программного кода. Это существенно замедляло работу в научных, инженерных и графических приложениях.

Разработка

Intel начала разработку специализированного сопроцессора для семейства 8086 в 1978 году. Команда инженеров под руководством Брюса Рэвена (Bruce Ravenel) и Уильяма Холла (William Hall) поставила задачу создать устройство, которое бы аппаратно реализовывало стандарт IEEE 754 для чисел с плавающей запятой (ещё до его официального принятия в 1985 году). Проект получил внутреннее обозначение 8087.

Первый образец был представлен в 1980 году. Серийное производство началось в 1981 году. Изначально чип выпускался по 3-микронной HMOS-технологии и содержал около 45 000 транзисторов. Тактовая частота составляла 5 МГц (позднее появились версии на 8 и 10 МГц).

Рыночная ниша

Intel 8087 стал первым коммерчески успешным математическим сопроцессором для персональных компьютеров. Он позиционировался как опциональное устройство для IBM PC (1981) и его клонов. Стоимость чипа в начале 1980-х годов составляла около 200–300 долларов США, что было сопоставимо с ценой самого процессора 8088.

Архитектура и принцип работы

Взаимодействие с центральным процессором

Intel 8087 не являлся автономным процессором — он работал исключительно в паре с ЦП Intel 8086 или 8088. Связь осуществлялась через общую системную шину данных и адресов. Сопроцессор «прослушивал» поток команд, поступающих в ЦП, и распознавал специальные префиксы (ESC-команды), зарезервированные для него. При обнаружении такой команды 8087 перехватывал управление и выполнял соответствующую математическую операцию, в то время как ЦП мог продолжать выполнение других инструкций (параллельная работа).

Регистровый стек

В отличие от ЦП, где регистры были организованы как массив, 8087 использовал стековую архитектуру. Он содержал 8 регистров (R0–R7) для хранения чисел с плавающей запятой. Каждый регистр имел разрядность 80 бит (10 байт), что соответствовало расширенному формату двойной точности стандарта IEEE 754. Стек позволял выполнять операции над верхними элементами без явной адресации.

Форматы данных

Сопроцессор поддерживал семь форматов чисел:

  • Короткое целое (16 разрядов)
  • Длинное целое (32 разряда)
  • Упакованное десятичное (18 цифр)
  • Короткое вещественное (32 бита, одинарная точность)
  • Длинное вещественное (64 бита, двойная точность)
  • Расширенное вещественное (80 бит)
  • Временное вещественное (80 бит, внутренний формат)

Набор команд

Intel 8087 поддерживал около 70 инструкций, включая:

  • Арифметические: сложение, вычитание, умножение, деление
  • Трансцендентные: синус, косинус, тангенс, арктангенс, экспонента, натуральный логарифм
  • Сравнения: сравнение чисел с плавающей запятой, проверка на равенство
  • Преобразования: перевод целых чисел в вещественные и обратно
  • Управление стеком: загрузка, сохранение, обмен

Технические характеристики

ПараметрЗначение
Производственный процесс3 мкм HMOS
Количество транзисторов~45 000
Тактовая частота5, 8, 10 МГц
Разрядность данных80 бит (внутренняя), 16 бит (внешняя шина)
Количество регистров8 (стековая организация)
Потребляемая мощность~2 Вт
Корпус40-контактный DIP (Dual In-line Package)
СовместимостьIntel 8086, 8088

Производительность

Intel 8087 обеспечивал значительное ускорение математических вычислений по сравнению с программной эмуляцией на ЦП. Например, операция умножения двух чисел с плавающей запятой выполнялась за 19–27 тактов (в зависимости от точности), тогда как на 8086/8088 та же операция требовала 130–160 тактов. Для трансцендентных функций (синус, логарифм) ускорение достигало 10–20 раз.

Типичные показатели времени выполнения (для версии 5 МГц):

  • Сложение/вычитание: 14–18 тактов
  • Умножение: 19–27 тактов
  • Деление: 39–43 такта
  • Синус/косинус: 100–200 тактов

Применение

Intel 8087 использовался в следующих областях:

  • Научные расчёты: моделирование физических процессов, обработка экспериментальных данных
  • Инженерные приложения: системы автоматизированного проектирования (САПР), расчёт конструкций
  • Финансовые вычисления: сложные проценты, статистические модели
  • Графика: расчёт траекторий, трёхмерная трансформация объектов
  • Образование: учебные лаборатории, демонстрация численных методов

Наиболее известные программные продукты, поддерживавшие 8087:

Наследие и влияние

Intel 8087 заложил основы для всей линейки математических сопроцессоров x87. Последующие поколения (80287, 80387, 80487) сохраняли обратную совместимость с архитектурой 8087. Начиная с процессора Intel 80486DX (1989), математический сопроцессор был интегрирован непосредственно в кристалл ЦП, что сделало отдельные чипы ненужными. Однако набор команд x87 продолжал использоваться в процессорах Pentium и более поздних моделях вплоть до внедрения SSE (Streaming SIMD Extensions) в 1999 году.

Архитектурные решения, впервые реализованные в 8087 — стековая организация регистров, 80-битный формат расширенной точности, аппаратная поддержка трансцендентных функций — стали стандартом де-факто для числовых вычислений на платформе x86 в течение двух десятилетий.

Критика

Несмотря на успех, Intel 8087 имел ряд недостатков:

  • Высокая стоимость: чип был дорогим, что ограничивало его массовое распространение.
  • Зависимость от тактовой частоты ЦП: сопроцессор работал на частоте системной шины, которая часто была ниже частоты процессора (например, в IBM PC — 4,77 МГц).
  • Ограниченная точность: в ранних версиях 8087 были обнаружены ошибки в реализации некоторых трансцендентных функций, которые исправлялись в последующих ревизиях (например, шаг 2.0).
  • Отсутствие поддержки в массовом ПО: многие программы не умели использовать сопроцессор, так как требовали специальной компиляции с опциями.

Интересные факты

  • Intel 8087 стал первым микропроцессором, реализовавшим стандарт IEEE 754 для чисел с плавающей запятой, хотя официально стандарт был принят только в 1985 году.
  • Чип содержал около 45 000 транзисторов — почти вдвое больше, чем процессор 8086 (29 000).
  • В СССР выпускался аналог 8087 — микросхема К1810ВМ87, производившаяся по лицензии на заводе «Квант» (г. Зеленоград).
  • Сопроцессор 8087 использовался в компьютере «Электроника МС 1504» — советском аналоге IBM PC/XT.

Источники

  • Intel Corporation. The 8087 Math Coprocessor: Technical Reference Manual. 1980.
  • Intel Corporation. Microprocessor and Peripheral Handbook. 1983.
  • Mazur, A. The 8087: A Technical Overview. Byte Magazine, 1981.
  • Шагурин, И. И. Микропроцессоры и микропроцессорные комплекты: справочник. Москва: Радио и связь, 1988.
  • Mueller, S. Upgrading and Repairing PCs. 15th ed. Que Publishing, 2003.

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →