Нравится? Делимся информацией!

пятница, 1 февраля 2013 г.

TMS320 c28x: Сравнение производительности стандартных функций из rts2800_fpu32 и rts2800_fpu32_fast_supplement библиотек




Простенькая программа для исследования будет :
  1. for(int k = 0; k < 100; ++k) {
  2. fRes = fNum1/fNum2;
  3. sqrtRes = std::sqrt( radicand );
  4. res = k % module;
  5. fNum1 += 0.01;
  6. fNum2 -= 0.01;
  7. radicand += 0.1;
  8. }
  9. fNum1 = .0f;
  10. fNum2 = 1.1f;
  11. radicand = .0f;
  12. } //while(1)

rts2800_fpu32.lib

Результаты профилирования кода, созданного при помощи rts2800_fpu32.lib:

Mixed code:

Примечание! см. TMS320C28x CPU and Instruction Set Reference Guide  Table 6-2
LCR 22bitAddr Long call using RPC
FFC XAR7,22bitAddr Fast function call

Вывод: деление - самая тяжеловесная операция. Занимает 227 тактов процессора. Посмотреть что означают колонки таблицы можно здесь

rts2800_fpu32_fast_supplement.lib
Сперва ознакомиться со статьей увеличиваем производительность стандартных функций заменой rts2800_fpu32 на rts2800_fpu32_fast_supplement .

Результаты профилирования кода, созданного при помощи rts2800_fpu32_fast_supplement.lib

Вывод: теперь деление не самая “тяжелая” операция, напротив - самая быстрая! Всего 20 тактов процессора!!! Извлечение корня - 24 такта!

В дополнение приведу данные из документации на Fast RTS библиотеку:

Комментариев нет:

Отправить комментарий