Некоторые сомнения в оптимизации неонового кода - PullRequest
0 голосов
/ 16 декабря 2011

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

Вот ссылка на мой код: http://pulsar.webshaker.net/ccc/sample-115d4c29

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

Сегмент кода разделен на 7 разделов в области «комментариев», чтобы было легче ссылаться.

Спасибо заранее. :)

1 Ответ

4 голосов
/ 19 декабря 2011

Вы можете попробовать эту ссылку

http://pulsar.webshaker.net/ccc/beta-sample-115d4c29

для этого используется бета-версия 0.9 счетчика циклов. Основное отличие состоит в том, что в симуляторе NEON больше не используются 2 различных конвейера. Из-за Cortex A9, который не может выполнить 2 инструкции NEON за один цикл.

Я начал обновлять некоторую часть счетчика циклов.

Результат:

- Информация о цикле является более точной для Cortex A9.

-Результат легче прочитать, поскольку большая часть информации о задержке NEON связана с непарными инструкциями.

Оранжевый цвет означает задержку из-за ожидания трубопровода

Красный цвет означает задержку из-за конфликта регистра.

Число, указанное рядом с регистром, не является количеством потерянных циклов. Это максимальное количество инструкций, которое вы можете поместить перед этой инструкцией.

Надеюсь, это поможет!

...