Как профилировать количество циклов, застопорившихся между двумя инструкциями в ARM Neon?

Например

    VMUL q0,q1,q2     
    VMUL q1,q0,q2

@VMUL needs 4 cycles for operation & result will be available by 7th cycle 
@next instruction will start only by 7th cycle so 5th, 6th cycle will stalled
@but next instruction need operate only by 2nd cycle of its beginning, 
@so it will start in 6th cycle itself. Result: 5th cycle is stalled 
@this is my understanding from manual.
  1. мое мнение правильно? если нет, пожалуйста, исправьте.
  2. Теперь я хочу знать, сколько циклов застопорилось между двумя инструкциями или во всем файле. как профилировать это?

1 ответ

Как отметили комментаторы, это специфическая проблема микроархитектуры. Многие реализации являются частными и частными, а инструменты, если они доступны, чрезвычайно дороги. Однако, если вы хотите протестировать очень маленькие математические процедуры, и если ARA-v7 ISA - ваша цель, есть онлайн-симулятор для базового "стандартного" A8:

http://pulsar.webshaker.net/ccc/index.php?lng=us

Это поможет вам почувствовать старую микроархитектуру, и если она будет работать хорошо для этого, она, вероятно, будет работать еще лучше на более новых микроархитектурах.

Я также чувствую, что этот инструмент хорошо спроектирован и позволяет легко видеть киоски и понимать, что происходит.

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

Другие вопросы по тегам