Блок с плавающей запятой - Floating-point unit
Эта статья фактическая точность могут быть скомпрометированы из-за устаревшей информации.Март 2017 г.) ( |
А блок с плавающей запятой (FPU, в просторечии математический сопроцессор) является частью компьютер система, специально разработанная для выполнения операций на плавающая точка числа.[1] Типичные операции: добавление, вычитание, умножение, разделение, и квадратный корень. Некоторые FPU также могут выполнять различные трансцендентные функции Такие как экспоненциальный или же тригонометрический расчеты, но точность может быть очень низкой,[2][3] так что некоторые системы предпочитают вычислять эти функции программно.
В общем компьютерные архитектуры, один или несколько FPU могут быть интегрированы как исполнительные единицы в пределах центральное процессорное устройство; однако многие встроенные процессоры не имеют аппаратной поддержки операций с плавающей запятой (хотя они все чаще имеют их в стандартной комплектации, по крайней мере, 32-битные).
Когда ЦП выполняет программу, которая вызывает операцию с плавающей запятой, есть три способа выполнить ее:
- Эмулятор модуля с плавающей запятой (библиотека с плавающей запятой).
- Надстройка FPU.
- Интегрированный FPU.
История
В 1963 г. GE-235 содержит «Вспомогательный арифметический блок» для вычислений с плавающей запятой и двойной точности.[4]
Исторически реализованные системы плавающая точка с сопроцессор а не как интегрированный блок (но теперь в дополнение к ЦП, например GPU - это сопроцессоры, которые не всегда встроены в CPU - как правило, имеют FPU, а первые поколения GPU - нет). Это может быть сингл Интегральная схема, Весь печатная плата или шкаф. Там, где оборудование для вычислений с плавающей запятой не было предоставлено, вычисления с плавающей запятой выполняются программно, что требует больше процессорного времени, но позволяет избежать затрат на дополнительное оборудование. Для конкретной компьютерной архитектуры инструкции с плавающей запятой могут быть подражал библиотекой программных функций; это может позволить то же самое объектный код для работы в системах с оборудованием с плавающей запятой или без него. Эмуляция может быть реализована на любом из нескольких уровней: в CPU как микрокод (не обычная практика), как Операционная система функция, или в пользовательское пространство код. Когда доступны только целочисленные функции, КОРДИК Чаще всего используются методы эмуляции с плавающей запятой.
В большинстве современных компьютерных архитектур существует некоторое разделение операций с плавающей запятой от целое число операции. Это разделение значительно зависит от архитектуры; у некоторых есть специальные регистры с плавающей запятой, а у некоторых, например Intel x86, считать это независимым синхронизация схемы.[5]
Подпрограммы CORDIC были реализованы в Intel x87 сопроцессоры (8087,[6][7][8][9][10] 80287,[10][11] 80387[10][11]) вверх к 80486[6] микропроцессорной серии, а также в Motorola 68881[6][7] и 68882 для некоторых типов команд с плавающей запятой, главным образом как способ уменьшить ворота подсчитывает (и сложность) подсистемы FPU.
Операции с плавающей точкой часто конвейерный. Ранее суперскалярный архитектуры без общих внеочередное исполнение, операции с плавающей запятой иногда конвейеризовались отдельно от целочисленных операций.
С начала 1990-х годов многие микропроцессоры для настольных компьютеров и серверов имеют более одного FPU.
Модульная архитектура Бульдозерная микроархитектура использует специальный FPU с именем FlexFPU, который использует одновременная многопоточность. Каждое физическое целочисленное ядро, по два на модуль, является однопоточным, в отличие от Intel Hyper Threading, где два виртуальных одновременных потока совместно используют ресурсы одного физического ядра.[12][13]
Библиотека с плавающей точкой
Некоторое оборудование с плавающей запятой поддерживает только самые простые операции: сложение, вычитание и умножение. Но даже самое сложное оборудование с плавающей запятой имеет ограниченное число операций, которые оно может поддерживать - например, никакие FPU напрямую не поддерживают арифметика произвольной точности.
Когда ЦП выполняет программу, которая вызывает операцию с плавающей запятой, которая напрямую не поддерживается аппаратным обеспечением, ЦП использует ряд более простых операций с плавающей запятой. В системах без какого-либо оборудования с плавающей запятой ЦП подражает это с помощью ряда более простых арифметика с фиксированной точкой операции, которые выполняются с целым числом арифметико-логическое устройство.
Программное обеспечение, которое перечисляет необходимые серии операций для имитации операций с плавающей запятой, часто упаковывается с плавающей запятой. библиотека.
Интегрированные FPU
В некоторых случаях FPU могут быть специализированными и разделенными на более простые операции с плавающей запятой (в основном, сложение и умножение) и более сложные операции, такие как деление. В некоторых случаях только простые операции могут быть реализованы аппаратно или микрокод, а более сложные операции реализованы в виде программного обеспечения.
В некоторых современных архитектурах функциональность FPU объединена с модулями для выполнения SIMD вычисление; примером этого является увеличение x87 инструкции установлены с SSE набор инструкций в x86-64 архитектура, используемая в новых процессорах Intel и AMD.
Дополнительные FPU
В 1980-х это было обычным явлением в IBM PC /совместимый микрокомпьютеры чтобы FPU был полностью отделен от ЦПУ, и обычно продается как дополнительное дополнение. Его можно было купить только в том случае, если это необходимо для ускорения или включения математических программ.
IBM PC, XT, и большинство совместимых устройств на основе 8088 или 8086 имели разъем для дополнительного сопроцессора 8087. В В и 80286 -системы обычно подключались к 80287, и 80386 / 80386SX на базе машин - для 80387 и 80387SX соответственно, хотя ранние модели были вставлены в разъем для 80287, поскольку 80387 еще не существовало. Другие компании производили сопроцессоры для серии Intel x86. К ним относятся Cyrix и Weitek.
Сопроцессоры были доступны для Семейство Motorola 68000, то 68881 и 68882. Это было обычным явлением в Motorola 68020 /68030 -основан рабочие станции, словно Вс-3 серии. Их также обычно добавляли в более дорогие модели Apple. Macintosh и коммодор Amiga серии, но в отличие от IBM PC-совместимых систем, разъемы для добавления сопроцессора не были так распространены в младших системах.
Есть также дополнительные блоки сопроцессора FPU для микроконтроллер единиц (MCU / мкКл) /одноплатный компьютер (SBC), которые служат для обеспечения плавающей запятой арифметика возможности. Эти дополнительные блоки FPU не зависят от хост-процессора и имеют собственные требования к программированию (операции, наборы инструкций и т. д.) и часто снабжены собственными интегрированные среды разработки (Иды).
Смотрите также
- Арифметико-логическое устройство (ALU)
- Блок генерации адресов (AGU)
- Загрузка – магазин
- КОРДИК подпрограммы используются во многих FPU для реализации функций, но не сильно увеличивают количество вентилей
- Блок исполнения
- IEEE 754 стандарт с плавающей запятой
- Шестнадцатеричное число с плавающей запятой IBM
- Блок обработки графики
- Операция умножения-накопления
Рекомендации
- ^ Андерсон, Стэнли Ф .; Эрл, Джон Дж .; Гольдшмидт, Роберт Эллиотт; Пауэрс, Дон М. (январь 1967 г.). «IBM System / 360 Model 91: блок выполнения с плавающей запятой». Журнал исследований и разработок IBM. 11 (1): 34–53. Дои:10.1147 / ряд.111.0034. ISSN 0018-8646.
- ^ Брюс Доусон (09.10.2014). «Intel занижает границы ошибок на 1,3 квинтиллиона». randomascii.wordpress.com. Получено 2020-01-16.
- ^ «Усовершенствования документации FSIN в» Руководстве разработчика программного обеспечения для архитектур Intel® 64 и IA-32"". intel.com. 2014-10-09. Получено 2020-01-16.
- ^ «Документы GE-2xx». www.bitsavers.org. CPB-267_GE-235-SystemManual_1963.pdf, п. IV-4.
- ^ «Семейство Intel 80287». www.cpu-world.com. Получено 2019-01-15.
- ^ а б c Мюллер, Жан-Мишель (2006). Элементарные функции: алгоритмы и реализация (2-е изд.). Бостон: Биркхойзер. п. 134. ISBN 978-0-8176-4372-0. LCCN 2005048094. Получено 2015-12-01.
- ^ Палмер, Джон Ф .; Морс, Стивен Пол (1984). Праймер 8087 (1-е изд.). John Wiley & Sons Australia, Limited. ISBN 0471875694. 9780471875697. Получено 2016-01-02.
- ^ Гласс, Л. Брент (январь 1990 г.). «Математические сопроцессоры: посмотрите, что они делают и как они это делают». Байт. 15 (1): 337–348. ISSN 0360-5280.
- ^ а б c Джарвис, Питтс (1990-10-01). «Реализация алгоритмов CORDIC - единая компактная процедура для вычисления трансцендентных функций». Журнал доктора Добба: 152–156. Получено 2016-01-02.
- ^ а б Юэн, А. К. (1988). «Процессоры Intel с плавающей точкой». Запись конференции Electro / 88: 48/5/1–7.
- ^ http://cdn3.wccftech.com/wp-content/uploads/2013/07/AMD-Steamroller-vs-Bulldozer.jpg
- ^ «AMD представляет Flex FP». bit-tech.net. Получено 29 марта 2018.
дальнейшее чтение
- Филиатро, Раймонд (2003). «ПРОСТО ФПУ».