Профилирование эталонного теста, скомпилированного для SPARC v8 на x86

#gcc #profiling #sparc #loop-unrolling

#gcc #профилирование #sparc #развертывание цикла

Вопрос:

Я пытаюсь внести (небольшое) улучшение в процессор leon3 (набор команд — SPARC v8) для академического упражнения. Прежде чем я решу, что улучшить, я хочу профилировать пару бенчмарковых программ, к которым я хочу адаптировать улучшения.

У меня нет доступа к компьютеру с SPARC v8.

В настоящее время я использую ознакомительную версию ‘tsim’ (симулятор leon3), которая выполняет профилирование на функциональном уровне. Что на самом деле не так уж и полезно.

Я пробовал странные вещи, такие как компиляция с включенным развертыванием цикла, а затем подсчет интересных инструкций в ассемблерном коде, но gcc отказывается разворачивать циклы, вероятно, потому, что некоторые из них заходят слишком глубоко (например, 4 вложенных цикла ‘for’).

В идеале, то, что я ищу, — это симулятор SPARC v8, который запускает бенчмарк и профилирует его на уровне инструкций (что-то вроде: ‘smul’ был выполнен x раз), чтобы я мог решить, с чего начать попытки улучшения. Конечно, если есть другие способы, которыми я могу это сделать, если не профилировщик, я не буду возражать.

Есть идеи?

Комментарии:

1. 1) Развертывание, вероятно, имеет смысл только во внутреннем цикле и только в том случае, если его содержимое очень легкое. (Вы всегда можете развернуть цикл самостоятельно.) 2) Может ли cachegrind выполнить синхронизацию этой инструкции? (Я не знаю.)

2. Cachegrind работает на Valgrind, который, к сожалению, не поддерживает SPARC. :/

Ответ №1:

Одним из вариантов может быть имитация процессора в Modelsim. С помощью Modelsim вы можете выполнить функциональное моделирование всего процессора LEON3. Хотя моделирование будет довольно медленным и, вероятно, совершенно излишним для ваших целей, Aeroflex Gaisler предоставляет отличные скрипты для работы с Modelsim.

Студенческую версию modelsim можно найти здесь:

http://www.mentor.com/company/higher_ed/modelsim-student-edition

Комментарии:

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

Ответ №2:

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

На ум приходитSimics. Раньше у них были бесплатные академические лицензии, но поскольку они были куплены Intel, теперь вам нужно подать заявку на получение одной, что, по моему опыту, занимает пару недель. Если вы готовы потратить это время, вы, безусловно, получите инструмент, соответствующий вашим потребностям, хотя они поддерживают LEON2, а не LEON3, в качестве модели, но для профилирования это должно подойти.

Qemu также имеет поддержку LEON, но поскольку они сильно перекомпилируются, вероятно, будет сложно выполнить профилирование на уровне инструкций с его помощью.