Jump to content

Модуль с плавающей запятой

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

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

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

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

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

В 1954 году в IBM 704 арифметика с плавающей запятой была стандартной функцией, что было одним из его основных улучшений по сравнению с предшественником IBM 701 . Это было перенесено на его преемников 709, 7090 и 7094.

В 1963 году Digital анонсировала PDP-6 , в котором плавающая запятая была стандартной функцией. [4]

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

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

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

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

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

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

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

[ редактировать ]

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

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

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

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

[ редактировать ]

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

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

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

[ редактировать ]

Некоторые модели PDP -11 , такие как PDP-11/45, [15] ПДП-11/34а, [16] : 184–185  ПДП-11/44, [16] : 195, 211  и ПДП-11/70, [16] : 277, 286–287  поддерживал дополнительный модуль с плавающей запятой для поддержки инструкций с плавающей запятой. ПДП-11/60, [16] : 261  МикроПДП-11/23 [17] и несколько VAX моделей [18] [19] мог выполнять инструкции с плавающей запятой без дополнительного FPU (для MicroPDP-11/23 требовалась дополнительная опция микрокода), [17] и предложил дополнительные ускорители для дальнейшего ускорения выполнения этих инструкций.

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

IBM PC, XT и большинство совместимых компьютеров на базе 8088 или 8086 имели разъем для дополнительного сопроцессора 8087. Системы на базе AT и 80286 обычно были разъёмами для 80287 , а машины на базе 80386/80386SX — для 80387 и 80387SX соответственно, хотя ранние системы были разъёмами для 80287, поскольку 80387 ещё не существовало. Другие компании производили сопроцессоры для серии Intel x86. В их число входили Cyrix и Weitek . Компания Acorn Computers выбрала WE32206, чтобы обеспечить одинарную , двойную и расширенную точность. [20] в свою ARM на базе линейку Archimedes , представив матрицу вентилей для взаимодействия процессора ARM2 с WE32206 для поддержки дополнительных инструкций ARM с плавающей запятой. [21] Позже Acorn предложила сопроцессор FPA10, разработанный ARM, для различных машин, оснащенных процессором ARM3. [22]

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

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

См. также

[ редактировать ]
  1. ^ Андерсон, Стэнли Ф.; Эрл, Джон Г.; Гольдшмидт, Роберт Эллиотт; Пауэрс, Дон М. (январь 1967 г.). «IBM System/360 Model 91: Модуль выполнения операций с плавающей запятой». Журнал исследований и разработок IBM . 11 (1): 34–53. дои : 10.1147/rd.111.0034 . ISSN   0018-8646 .
  2. ^ Доусон, Брюс (9 октября 2014 г.). «Intel занижает границы ошибок на 1,3 квинтиллиона» . Randomascii.wordpress.com . Проверено 16 января 2020 г.
  3. ^ «Усовершенствования документации ФСИН в «Руководстве разработчика программного обеспечения для архитектур Intel® 64 и IA-32» » . intel.com . 09.10.2014. Архивировано из оригинала 16 января 2020 г. Проверено 16 января 2020 г.
  4. ^ «Справочник по PDP-6» (PDF) . www.bitsavers.org . Архивировано (PDF) из оригинала 9 октября 2022 г.
  5. ^ «Документы GE-2xx» . www.bitsavers.org . CPB-267_GE-235-SystemManual_1963.pdf , стр. IV-4.
  6. ^ «Семейство Intel 80287» . www.cpu-world.com . Проверено 15 января 2019 г.
  7. ^ Jump up to: а б с Мюллер, Жан-Мишель (2006). Элементарные функции: алгоритмы и реализация (2-е изд.). Бостон, Массачусетс: Биркхойзер . п. 134. ИСБН  978-0-8176-4372-0 . LCCN   2005048094 . Проверено 1 декабря 2015 г.
  8. ^ Jump up to: а б Нейв, Рафи (март 1983 г.). «Реализация трансцендентных функций на числовом процессоре». Микропроцессинг и микропрограммирование . 11 (3–4): 221–225. дои : 10.1016/0165-6074(83)90151-5 .
  9. ^ Палмер, Джон Ф.; Морс, Стивен Пол (1984). Букварь 8087 (1-е изд.). Джон Вили и сыновья Австралия, Лимитед . ISBN  0471875694 . 9780471875697 . Проверено 2 января 2016 г.
  10. ^ Гласс, Л. Брент (январь 1990 г.). «Математические сопроцессоры: взгляд на то, что они делают и как они это делают». Байт . 15 (1): 337–348. ISSN   0360-5280 .
  11. ^ Jump up to: а б с Джарвис, Питтс (1 октября 1990 г.). «Реализация алгоритмов CORDIC — единая компактная процедура для вычисления трансцендентных функций» . Журнал доктора Добба : 152–156 . Проверено 2 января 2016 г.
  12. ^ Jump up to: а б Юэнь, АК (1988). «Процессоры Intel с плавающей запятой». Протокол конференции Electro/88 : 48/5/1–7.
  13. ^ «Архивная копия» . cdn3.wccftech.com . Архивировано из оригинала 9 мая 2015 года . Проверено 14 марта 2022 г. {{cite web}}: CS1 maint: архивная копия в заголовке ( ссылка )
  14. ^ «AMD представляет Flex FP» . bit-tech.net . Проверено 29 марта 2018 г.
  15. ^ Справочник по процессору PDP-11/45 (PDF) . Корпорация цифрового оборудования . 1973. Глава 7 «Процессор с плавающей запятой».
  16. ^ Jump up to: а б с д Справочник по процессору PDP-11 (PDF) . Корпорация цифрового оборудования . 1979.
  17. ^ Jump up to: а б Справочник MICRO/PDP-11 (PDF) . Корпорация цифрового оборудования . 1983. с. 33.
  18. ^ VAX – Справочник по аппаратному обеспечению, том I – 1986 г. (PDF) . Корпорация цифрового оборудования . 1985.
  19. ^ VAX – Справочник по аппаратному обеспечению, том II – 1986 г. (PDF) . Корпорация цифрового оборудования . 1986.
  20. ^ «Сопроцессор Western Electric 32206» . www.cpu-world.com . Проверено 6 ноября 2021 г.
  21. ^ Товарищи, Пол (март 1990 г.). «Программирование ARM: сопроцессор с плавающей запятой». A&B вычисления . стр. 43–44.
  22. ^ «Acorn выпускает ускоритель операций с плавающей запятой» (пресс-релиз). Желудь Компьютерс Лимитед. 5 июля 1993 года . Проверено 7 апреля 2021 г.

Дальнейшее чтение

[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 2272da6d52eabe4638abcc2204077f8a__1720466640
URL1:https://arc.ask3.ru/arc/aa/22/8a/2272da6d52eabe4638abcc2204077f8a.html
Заголовок, (Title) документа по адресу, URL1:
Floating-point unit - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)