2 AlexandrY к скоростимерным делам Вот скомпилячил тест:
ARM9 (EPXA1F484C3). Компилер CCS 2.30, данные и код в DDR-SDRAM, ядро на 133 мгц, DDR на той-же частоте (266 мгц). Оптимизация полная (file-level, auto-inlining, speed) Отладчик XDS-510, кол-во тактов получено профайлером на макете.
32-bit IEEE double: 29582793 тактов
64-bit IEEE double: 47016745 тактов
Нюанс: в библиотеке нет функций "cosf, sinf" и так далее - посему вся тригонометрия и прочие функции вычислялись в обоих вариантах в 64-bit IEEE double. Так что в 32-битном варианте реально 32-битной была только арифметика - сложить, умножить, разделить и вычесть.
TMS320C6711BGFN - измерения профайлером CCS'а через JTAG на макете.
компилер CCS 2.30. Оптимизация полная (file-level, auto-inlining, software pipelining, speculative threshold=56) на скорость. проц живет на 150 мгц, SDRAM на 100 мгц. Код, данные, стек, все в куче в SDRAM. Кеш в режиме 32К кеша L2, и 32К L2 SRAM (пустует).
32-bit IEEE float:
либа rts6700.lib : 1550744...1587836 тактов (0.159c/10МГц)
либа fastrts67x.lib : 736721...771117 тактов (0.077c/10МГц)
64-bit IEEE double:
либа rts6700.lib : 5798756...5800312 тактов (0.58с/10мгц)
либа fastrts67x.lib : 3312556...3321650 тактов (0.33c/10мгц)
Разброс тактов - так как начальное состояние кеша разное, и клоки для SDRAM и ядра с разных источников, несинхронность вызывает тормоза, зависящие от фазы луны. Сорри, но макет такой вот уж у меня. Поперезапускал с резетом и без резета раз по 10, и написал худшее и лучшее.
-
- Так и запишем ;-) - AlexandrY(01.03.2005 20:35)