как генерировать прерывание мониторинга производительности после каждого переполнения

Я хочу настроить счетчик производительности IA32_PERF_FIXED_CTR0 для генерации прерывания мониторинга производительности (PMI) после каждых N удаленных инструкций.

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

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

Может кто-нибудь сообщить мне, как я могу генерировать прерывание после каждых N инструкций. Любая помощь будет высоко оценена.




Ответы (1)


Не забудьте очистить бит маски прерывания в регистре счетчика производительности LVT; чтобы разрешить дальнейшее прерывание. Этот флаг автоматически устанавливается в 1 каждый раз, когда LAPIC обрабатывает прерывание контроля производительности, таким образом блокируя любой последующий PMI. Прочитайте главу 10 документа Intel по LAPIC.

person Jeffrey02    schedule 11.03.2018