Как часть проекта курса, мне нужно проанализировать часть кода C ++ на предмет производительности и выяснить, какие части компьютерной архитектуры (MIPS или x86) чаще всего используются во время выполнения кода и, возможно, являются узким местом для производительности. Я смотрю на различные профилировщики для анализа производительности и наткнулся SimpleScalar это отличный инструмент, но, к сожалению, работает только с C-кодом.
Так как я более знаком с Архитектура MIPS было бы замечательно, если бы был такой инструмент, как SimpleScalar, для моделирования и профилирования кода C ++ для MIPS. Я смотрю на критически важные для производительности части, такие как ветвь, кэш, набор команд, режимы адресации и т. Д. Если нет, то было бы замечательно упомянуть любой инструмент, который может выполнять аналогичный вид анализа для архитектур x86.
(Просто, чтобы уточнить, я не ищу какой-либо старый профилировщик, но я ищу тот, который понимает микроархитектуру ЦП и знает, какие части ЦП используются или недоиспользуются.)
КАКТУСЫ имеет подробное низкоуровневое моделирование кэша.
SESC точный цикл компьютерная архитектура симулятор который поддерживает MIPS.
SESC включает в себя CACTI.
Я сомневаюсь, что то, что вы хотите, возможно. C ++ — это язык, но он все еще должен быть скомпилирован с целевой архитектурой. Оптимизации (или их отсутствие) будут определять многие критерии вашей производительности, такие как использование кэша и т. Д. Поэтому я полагаю, что вам нужно искать профилировщики уровня машины (надеюсь, они поддерживают формат отладки вашего компилятора, поэтому вы видите исходный код). контекст).
Насколько я понимаю, SimpleScalar может моделировать и профилировать машинный код MIPS, независимо от того, на каком языке он был скомпилирован.
(Отладчик исходного уровня «DLite!», Поставляемый с SimpleScalar, может поддерживать только несколько языков, но, похоже, вам не нужно «отлаживать» свой код.)