Введение

Часть компьютерной системы

Блок операций с плавающей точкой (FPU, в разговорной речи – математический сопроцессор) – это часть компьютерной системы, специально разработанная для выполнения операций над числами с плавающей точкой. Типичные операции включают сложение, вычитание, умножение, деление и извлечение квадратного корня. Некоторые FPU также могут выполнять различные трансцендентные функции, такие как экспоненциальные или тригонометрические вычисления, но точность может быть недостаточной, поэтому в некоторых системах предпочтительнее вычислять эти функции программно. В архитектурах компьютеров общего назначения один или несколько FPU могут быть интегрированы в качестве исполнительных устройств в центральном процессоре. Однако многие встраиваемые процессоры не имеют аппаратной поддержки операций с плавающей точкой (хотя она все чаще становится стандартной). Когда процессор выполняет программу, требующую операции с плавающей точкой, существует три способа ее выполнения:
Эмулятор блока операций с плавающей точкой (программная библиотека для работы с плавающей точкой)
Внешний FPU (аппаратное обеспечение)
Интегрированный FPU (аппаратное обеспечение)

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

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

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

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

Дополнительные ППУ

Несколько моделей PDP 11, таких как PDP 11/45, PDP 11/34a, PDP 11/44, и несколько моделей VAX, могли выполнять инструкции с плавающей запятой без дополнительного FPU (MicroPDP 11/23 требовал дополнительной опции микрокода). Также это касалось линейки Archimedes с процессорами ARM. Копроцессоры были доступны для семейства Motorola 68000, модели 68881 и 68882. Они часто использовались в рабочих станциях на базе Motorola 68020/68030, например, в серии Sun 3. Их также часто добавляли в более производительные модели Apple Macintosh и Commodore Amiga, но, в отличие от IBM PC-совместимых систем, разъемы для подключения сопроцессора были менее распространены в системах начального уровня. Существуют также отдельные FPU-сопроцессорные модули для микроконтроллеров (MCU/μC) / одноплатных компьютеров (SBC), предназначенные для обеспечения возможностей вычислений с плавающей точкой. Эти отдельные FPU не зависят от основного процессора, имеют собственные требования к программированию (операции, наборы инструкций и т.д.) и часто поставляются со своими собственными интегрированными средами разработки (IDE).