Блок вычислений с плавающей точкой: устройство и принципы работы.
Floating-point unit
Блок операций с плавающей точкой (FPU): что это, для чего нужен, как работает. Аппаратная и программная реализация, функции и применение в компьютерах.
Сравнивайте с английским: нажмите на абзац — оригинал откроется в окне. Кнопка EN под абзацем показывает его прямо в тексте.
Содержание
Введение
Часть компьютерной системы
Part of a computer system
Блок операций с плавающей точкой (FPU, в разговорной речи – математический сопроцессор) – это часть компьютерной системы, специально разработанная для выполнения операций над числами с плавающей точкой. Типичные операции включают сложение, вычитание, умножение, деление и извлечение квадратного корня. Некоторые FPU также могут выполнять различные трансцендентные функции, такие как экспоненциальные или тригонометрические вычисления, но точность может быть недостаточной, поэтому в некоторых системах предпочтительнее вычислять эти функции программно. В архитектурах компьютеров общего назначения один или несколько FPU могут быть интегрированы в качестве исполнительных устройств в центральном процессоре. Однако многие встраиваемые процессоры не имеют аппаратной поддержки операций с плавающей точкой (хотя она все чаще становится стандартной). Когда процессор выполняет программу, требующую операции с плавающей точкой, существует три способа ее выполнения:
Эмулятор блока операций с плавающей точкой (программная библиотека для работы с плавающей точкой)
Внешний FPU (аппаратное обеспечение)
Интегрированный FPU (аппаратное обеспечение)
A floating point unit (FPU, colloquially a math coprocessor) is a part of a computer system specially designed to carry out operations on floating point numbers. Typical operations are addition, subtraction, multiplication, division, and square root. Some FPUs can also perform various transcendental functions such as exponential or trigonometric calculations, but the accuracy can be low, so some systems prefer to compute these functions in software. In general purpose computer architectures, one or more FPUs may be integrated as execution units within the central processing unit; however, many embedded processors do not have hardware support for floating point operations (while they increasingly have them as standard). When a CPU is executing a program that calls for a floating point operation, there are three ways to carry it out:
A floating point unit emulator (a floating point library in software)
Add on FPU hardware
Integrated FPU (in hardware)
Библиотека с плавающей точкой
Некоторые аппаратные средства для работы с числами с плавающей точкой поддерживают только самые простые операции: сложение, вычитание и умножение. Но даже самое сложное аппаратное обеспечение для работы с числами с плавающей точкой имеет конечное число поддерживаемых операций – например, ни один FPU не поддерживает арифметику произвольной точности напрямую. Когда процессор выполняет программу, требующую операции с плавающей точкой, которая не поддерживается аппаратным обеспечением напрямую, процессор использует последовательность более простых операций с плавающей точкой. В системах, не имеющих аппаратного обеспечения для работы с числами с плавающей точкой, процессор эмулирует его, используя последовательность более простых операций с фиксированной точкой, выполняемых на целочисленном арифметико-логическом устройстве. Программное обеспечение, содержащее последовательность операций, необходимых для эмуляции операций с плавающей точкой, обычно поставляется в виде библиотеки для работы с числами с плавающей точкой.
Some floating point hardware only supports the simplest operations: addition, subtraction, and multiplication. But even the most complex floating point hardware has a finite number of operations it can supportfor example, no FPUs directly support arbitrary precision arithmetic. When a CPU is executing a program that calls for a floating point operation that is not directly supported by the hardware, the CPU uses a series of simpler floating point operations. In systems without any floating point hardware, the CPU emulates it using a series of simpler fixed point arithmetic operations that run on the integer arithmetic logic unit. The software that lists the necessary series of operations to emulate floating point operations is often packaged in a floating point library.
Интегрированные ППП
В некоторых случаях FPU могут быть специализированными и разделены на выполнение более простых операций с плавающей точкой (преимущественно сложения и умножения) и более сложных, таких как деление. Иногда только простые операции реализуются аппаратно или в микрокоде, а более сложные – программно. В некоторых современных архитектурах функциональность FPU объединяется с SIMD-блоками для выполнения SIMD-вычислений; примером этого является расширение набора инструкций x87 набором инструкций SSE в 64-битной архитектуре x86, используемой в новых процессорах Intel и AMD.
In some cases, FPUs may be specialized, and divided between simpler floating point operations (mainly addition and multiplication) and more complicated operations, like division. In some cases, only the simple operations may be implemented in hardware or microcode, while the more complex operations are implemented as software. In some current architectures, the FPU functionality is combined with SIMD units to perform SIMD computation; an example of this is the augmentation of the x87 instructions set with SSE instruction set in the x86 64 architecture used in newer Intel and AMD processors.
Дополнительные ППУ
Несколько моделей 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).
Several models of the PDP 11, such as the PDP 11/45, PDP 11/34a, PDP 11/44, and several VAX models could execute floating point instructions without an add on FPU (the MicroPDP 11/23 required an add on microcode option), to its ARM powered Archimedes range. Coprocessors were available for the Motorola 68000 family, the 68881 and 68882. These were common in Motorola 68020/68030 based workstations, like the Sun 3 series. They were also commonly added to higher end models of Apple Macintosh and Commodore Amiga series, but unlike IBM PC compatible systems, sockets for adding the coprocessor were not as common in lower end systems. There are also add on FPU coprocessor units for microcontroller units (MCUs/μCs)/single board computer (SBCs), which serve to provide floating point arithmetic capability. These add on FPUs are host processor independent, possess their own programming requirements (operations, instruction sets, etc.) and are often provided with their own integrated development environments (IDEs).