Я хотел бы знать, какова цель специального блока FPU, который рекламируется с микроконтроллерами STM32F4?
Цитирую этот сайт :
«Ядро Cortex-M4 оснащено модулем с плавающей запятой (FPU) одинарной точности, который поддерживает все инструкции и типы данных ARM по обработке данных одинарной точности».
Какая была бы разница, если бы этого блока не было в архитектуре? Означает ли это, что мне нужно использовать некоторые специальные библиотеки/функции при выполнении арифметических операций с переменными с плавающей запятой? Спасибо.
Да, если у вас нет аппаратного модуля с плавающей запятой, то операции с плавающей запятой должны выполняться с использованием библиотечных функций. Это то, что делается с типичными процессорами Cortex-M3, которые не имеют аппаратной поддержки операций с плавающей запятой, и время выполнения этих операций значительно увеличивается.
Если вам нужно выполнять простые операции с плавающей запятой одинарной точности, FPU (при условии, что ваш компилятор поддерживает его и вы его правильно настроили) может ускорить эти операции как минимум на порядок.
Имейте в виду, что если вам нужна двойная точность, SPFPU не поможет. На практике 24 бита мантиссы (32-битное число с плавающей запятой) недостаточно для многих реальных приложений (точный сбор и фильтрация данных, навигация, высококачественное аудио), тогда как двойной или часто даже 32-битной фиксированной точки достаточно. .
Не уверен, ускоряет ли это трансцендентальные SP или нет, я хотел бы увидеть некоторые тесты.
32-битный ARM довольно эффективен в программном обеспечении с плавающей запятой. Набор инструкций позволяет любой инструкции включать сдвиг ствола вправо или влево произвольной длины за 1 цикл. Прирост скорости за счет аппаратного обеспечения FP составляет от 5 до 50 в зависимости от операции и того, как обрабатываются такие вещи, как триггерные функции. Аппаратный DSP с фиксированной точкой в F4 может повысить скорость DSP примерно в 2-4 раза. Звучит не так уж много, но это разница между обновлением скорости двигателя 16 раз в секунду по сравнению с 4. Среди прочего, у него есть MAC (умножитель-накопитель), который выполняет 32x32 + 64 --> 64-битный аккумулятор, и некоторые процессы, которые будут выполнять пару MAC-адресов от 16 до 32 бит. MAC является основой DSP.
Также имеется аналоговый генератор случайных чисел и 3 12-битных АЦП, которые могут обрабатывать 7,2 МГц (я предполагаю, что это плата Discovery). Я предполагаю, что мы увидим много таких вариантов с "-uino".
Re: Преимущество в скорости, когда-то я провел большой анализ. Это было 1 МГц 65C02 по сравнению с тем же с добавленным FPU ADM9511. Несколько вещей в трансценденталах были в 1000 раз быстрее, но многое было только в диапазоне от 10 до 50. В качестве вдохновения для ARM неудивительно, что 6502 был довольно эффективным. Возняк написал всю систему Apple II FP в 256 байт. Числа от 100 до 1000X были хороши для некоторых других 8-битных 8080/Z80. У AVR в Arduino есть несколько приятных трюков с набором инструкций, благодаря которым он намного опережает толпу 8080 в старые времена.
105 крон
Джеймс С
Джо Хасс
Спехро Пефхани
Джо Хасс
Олин Латроп