ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Воскресенье
8 июня
1514086
POV (24.04.2025 22:24, просмотров: 362)
Смешное и бесполезное... 

Я ж цыгналы (С8051) начинал использовать еще цыгналовские. И помнил, что MAC появился лишь в серии F13x. И никогда не использовал аппаратное ускорение вычислений (а Кейл умеет!).

И вот открытие спустя 20 лет - силабовские "цыгналы" ископропки имеют этот модуль (серия F12x), а F13х серия попросту не существует!


Но штука оказалась бесполезной. Видимо, лишь свертку ей делать хорошо если компилятор поймет.. и то вряд ли, ручками на асме писать придется.

А для простых операций всегда надо предварительно обнулять результат, что нивелирует эффект от перехода с 16битному умножителю. И в плавучке это тоже никак не используется.


Вот такой тупорый код показал ускорение на 1 условный тик времени: 97 против 98.. примерно 1% при всех накладных работы с xdata.

Если же переменные в data, то выигрыша не видно, стабильные 29 тиков.

Собственно, хоть какой-то выигрыш уже удивителен, т.е. умножения нет в коде. Видать, суммирование MAC'ом делает.


Тест с умножениями тоже оказался никакой. 198 тиков. Хотя размер кода меняется заметно, таки применяется этот MAC.



Если заменить на /= то те же самые цифры.



Вместе с тем непонятна замена int32_t на float. По первому тесту плавука требуется в +3 раза тактов больше (что ожидаемое для программной реализации).

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

FPMUL

LMUL

LMUL_F120 - целочисленное, при аппаратном ускорении.




Кому это F120 нужны сейчас. Дорого и беспонтово.. но всё же - я нигде не напортачил с кодом, ничего компилятор не выкинул? А то может я тепературу на Луне наблюдаю.