Блок с плавающей точкой

редактировать
Коллекция математических сопроцессоров семейства x87 от Intel

A модуль с плавающей запятой (FPU, в просторечии математический сопроцессор ) является частью компьютерной системы, специально разработанной для выполнения операций на числа с плавающей запятой. Типичными операциями являются сложение, вычитание, умножение, деление и квадратный корень. Некоторые FPU могут также выполнять различные трансцендентные функции, такие как экспоненциальные или тригонометрические вычисления, но точность может быть очень низкой, поэтому некоторые системы предпочитают вычислять эти функции. в программном обеспечении.

В компьютерных архитектурах общего назначения один или несколько FPU могут быть интегрированы как исполнительные блоки в центральный процессор ; однако многие встроенные процессоры не имеют аппаратной поддержки операций с плавающей запятой (хотя они все чаще имеют их в стандартной комплектации, по крайней мере, 32-битные).

Когда ЦП выполняет программу, которая вызывает операцию с плавающей запятой, есть три способа ее выполнения:

  • Эмулятор модуля с плавающей запятой (библиотека с плавающей запятой).
  • Дополнительный FPU.
  • Интегрированный FPU.

Содержание

  • 1 История
  • 2 Библиотека с плавающей запятой
  • 3 Интегрированные FPU
  • 4 Дополнительные FPU
  • 5 См. Также
  • 6 Ссылки
  • 7 Дополнительная литература

История

В 1963 году GE-235 имел «Вспомогательный арифметический блок» для операций с плавающей запятой и вычисления с двойной точностью.

Исторически в системах с плавающей запятой использовался сопроцессор, а не как интегрированный блок (но теперь в дополнение к ЦП, например Графические процессоры - сопроцессоры, не всегда встроенные в ЦП - как правило, имеют FPU, а первые поколения графических процессоров - нет). Это может быть отдельная интегральная схема, вся печатная плата или шкаф. Там, где оборудование для вычислений с плавающей запятой не было предоставлено, вычисления с плавающей запятой выполняются программно, что требует больше процессорного времени, но позволяет избежать затрат на дополнительное оборудование. Для конкретной компьютерной архитектуры инструкции модуля с плавающей запятой могут эмулироваться библиотекой программных функций; это может позволить запускать один и тот же объектный код в системах с оборудованием с плавающей запятой или без него. Эмуляция может быть реализована на любом из нескольких уровней: в ЦП как микрокод (не обычная практика), как функция операционной системы или в пользовательском пространстве код. Когда доступны только целочисленные функции, чаще всего используются методы эмуляции с плавающей запятой CORDIC.

В большинстве современных компьютерных архитектур существует некоторое разделение операций с плавающей запятой от операций целых чисел. Это разделение значительно зависит от архитектуры; у некоторых есть выделенные регистры с плавающей запятой, в то время как некоторые, такие как Intel x86, считают это независимыми тактовыми схемами.

Подпрограммы CORDIC были реализованы в Сопроцессоры Intel x87 (8087, 80287, 80387) до серии микропроцессоров 80486, а также в серии Motorola 68881 и 68882 для некоторых виды команд с плавающей запятой, в основном как способ уменьшить количество элементов (и сложность) подсистемы FPU.

Операции с плавающей запятой часто конвейерные. В более ранних суперскалярных архитектурах без общего выполнения вне очереди операции с плавающей запятой иногда конвейеризовались отдельно от целочисленных операций.

С начала 1990-х годов многие микропроцессоры для настольных компьютеров и серверов имеют более одного FPU.

Модульная архитектура микроархитектуры Bulldozer использует специальный FPU с именем FlexFPU, который использует одновременную многопоточность. Каждое физическое целочисленное ядро, по два на модуль, является однопоточным, в отличие от Intel Hyperthreading, где два виртуальных одновременных потока совместно используют ресурсы одного физического ядра.

Библиотека с плавающей точкой.

В Викиучебнике есть книга по теме: Плавающая точка / Программные реализации
В Викиучебнике есть книга по теме: Встроенные системы / Модуль с плавающей точкой

Некоторое оборудование с плавающей запятой поддерживает только самые простые операции: сложение, вычитание и умножение. Но даже самое сложное оборудование с плавающей запятой имеет конечное число операций, которые оно может поддерживать - например, никакие FPU напрямую не поддерживают арифметику произвольной точности.

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

Программное обеспечение, которое перечисляет необходимые серии операций для имитации операций с плавающей запятой, часто упаковывается в библиотеку с плавающей запятой .

Интегрированные FPU

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

В некоторых современных архитектурах функциональные возможности FPU объединены с модулями для выполнения вычислений SIMD ; Примером этого является расширение набора инструкций x87 с помощью набора инструкций SSE в архитектуре x86-64, используемой в новых процессорах Intel и AMD.

Дополнительные FPU

В 1980-х годах в IBM PC / совместимых микрокомпьютерах было обычным делом, чтобы FPU был полностью отделен от CPU и обычно продается как дополнительный модуль. Его можно было бы купить только в том случае, если это необходимо для ускорения или включения математических программ.

IBM PC, XT и большинство совместимых устройств на базе 8088 или 8086 имели разъем для дополнительного сопроцессора 8087. Системы на базе AT и 80286, как правило, подключались к машинам на базе 80287 и 80386 / 80386SX - к машинам 80387 и 80387SX соответственно, хотя ранние были вставлены в разъем для 80287, поскольку 80387 еще не существовало. Другие компании производили сопроцессоры для серии Intel x86. К ним относятся сопроцессоры Cyrix и Weitek.

, которые были доступны для семейства Motorola 68000, 68881 и 68882. Они были распространены в Motorola 68020 / 68030 на базе рабочих станций, таких как серия Sun-3. Они также обычно добавлялись в старшие модели серий Apple Macintosh и Commodore Amiga, но, в отличие от IBM PC-совместимых систем, разъемы для добавления сопроцессора не были так распространены в младших поколениях. оконечные системы.

Существуют также дополнительные сопроцессорные блоки FPU для блоков микроконтроллеров (MCU / μC) / одноплатных компьютеров (SBC), которые служат для обеспечения плавающего точка арифметическая возможность. Эти дополнительные FPU не зависят от хост-процессора, обладают собственными требованиями к программированию (операции, наборы инструкций и т. Д.) И часто поставляются с собственной интегрированной разработкой. среды (IDE).

См. Также

Ссылки

Дополнительная литература

Последняя правка сделана 2021-05-20 08:47:12
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте