Пр о ц е с с о р TMS 3 2 0C4 x
110
2.7. Оптимизация ассемблерного кода
Под
оптимизацией
программы по времени будем понимать процесс мо-
дификации ее кода с целью максимального приближения реального времени
выполнения к теоретически достижимому при сохранении функциональных
возможностей программы. Для этого требуется детальный анализ времени на
самом низком аппаратно-программном уровне.
Профилированием
называется процесс выполнения программы или от-
дельных ее участков с целью получения некоторых статистических характери-
стик (времени выполнения отдельных участков кода, количества проходов цик-
лов и т.д). Профилирование производится при оптимизации программ по вре-
мени выполнения для выявления команд или участков кода, вызывающих поте-
ри времени (конфликты конвейера). Профилирование осуществляется с приме-
нением соответствующего
инструментального
ПО (например симулятора).
Отметим несколько правил, применяемых для оптимизации по времени
выполнения ассемблерной программы для процессора TMS320C4x.
Использование команд задержанного перехода.
Команды задержанных
переходов выполняются за один цикл, в то время как команды стандартных пе-
реходов – за четыре цикла. В командах задержанных переходов всегда, незави-
симо от выполнения условия перехода, выполняется три команды, следующие
за командой перехода. Если за командой перехода следует меньше трех команд,
добавляются пустые инструкции NOP. Замена стандартных переходов на за-
держанные может быть осуществлена в случае, если перестановка команд не
нарушает логики программы и за задержанным переходом не требуется добав-
лять три команды NOP. Если за задержанным переходом следует три команды
NOP, его смело можно заменить на стандартный, поскольку такая конструкция
не дает никакого выигрыша по времени выполнения.
Задержанные (специальные) вызовы подпрограмм и возвраты.
Стан-
дартные инструкции
CALL
(вызов подпрограммы) и
RETS
(возврат из подпро-
граммы) выполняются за четыре цикла. Вместо этого можно воспользоваться
специальным задержанным вызовом подпрограммы
LAJ
и возвратом из под-
программы с помощью команды задержанного перехода
BUD R11
. Условия
применения этих команд такие же, как и команд задержанных переходов.
Применение повторов блока команд или одиночной команды.
Это
метод организации программных циклов без дополнительных временных за-
трат. Следует отметить, что такие циклы не допускают вложенности. Команда
RPTBD
выполняется за один цикл, команды
RPTB
и
RPTS
- за четыре. Коман-
да задержанного повтора блока RPTBD обрабатывается процессором аналогич-
но задержанным переходам. Примечательно, что команда повтора одиночной
инструкции RPTS блокирует все прерывания, включая немаскируемое
NMI,
и
не производит многократной выборки из памяти повторяемой инструкции, что
освобождает процессорные шины для других операций.
Использование параллельных инструкций.
Процессор позволяет вы-
полнять умножение со сложением (или вычитанием) и запись результата опера-