Вот что я могу вспомнить об этом счетчике циклов:
«n» обозначает конвейер Neon, «a» обозначает конвейер ARM. Фактически вы смешиваете инструкции ARM и NEON.
Что касается "q6l: 1": q6l - это регистр, который заставляет текущие инструкции ждать, а 1 - это количество дополнительных полупериодов, необходимых для того, чтобы этот регистр / результат стал доступным для команды, следовательно, это количество полупериодов. инструкции надо дождаться его ввода. Я не уверен, но полагаю, что «q6l» - это нижняя часть регистра q6.
Число «23» в вашем примере - это номер цикла, в котором инструкция может начать выполнение.
Время подсчета не имеет ничего общего с вашим кодом. Время синтаксического анализа - это время, затрачиваемое инструментом на интерпретацию предоставленных вами инструкций. Время подсчета - это время, которое требуется инструменту для анализа ваших инструкций и предоставления информации о цикле.
Я объясню результаты подробнее, например:
n.18-0 1c n0 q10:8
«n» обозначает исполнительную единицу (n = неон, a = рука, v = vfp).
«18» - это номер цикла, в котором инструкция может начать выполнение.
«0» - это номер конвейера.
«1c» - это количество циклов выполнения инструкции. ОБРАТИТЕ ВНИМАНИЕ, что это отличается от количества циклов, необходимых до тех пор, пока результат инструкции не станет доступен для дальнейших инструкций.
«n0» - конвейер, заставляющий текущую инструкцию ожидать результата. n0 = неоновый трубопровод номер 0.
«q10» - это регистр, заставляющий инструкцию ожидать результата.
«8» относится ко времени, в течение которого инструкция должна ждать результатов. Если я правильно помню, это количество полупериодов.
Этот счетчик не учитывает тот факт, что компилятор может переупорядочить инструкции, то есть отложить инструкцию, ожидающую результата. Но если вы заставляете свой компилятор не переупорядочивать инструкции сборки, когда инструкции должны ждать результата, никакие другие инструкции не могут начать выполнение, даже если им не нужно ждать результата, поэтому это вызывает остановку выполнения, в которой ЦП не может выполнить никаких инструкций.
Более того, я бы не стал использовать этот тип счетчика для кода с циклами. Я предлагаю вам разбить код на разные части и оптимизировать каждый цикл отдельно.
person
Alessandro Gaietta
schedule
13.06.2014