Как генерировать прерывание мониторинга производительности после каждого переполнения
Я хочу настроить счетчик производительности IA32_PERF_FIXED_CTR0 для генерации прерываний мониторинга производительности (PMI) после каждых N удаленных инструкций.
Проблема состоит в том, что, хотя я получаю первое прерывание PMC, я не получаю никаких дальнейших прерываний, даже если я сбрасываю счетчик на его первоначальное количество, снимите флаг переполнения, как сказано в справочном руководстве Intel.
Я сделал некоторые проверки, положив отпечаток после сброса значения счетчика, и проверил, что это сделано правильно, и также убедился, что счетчик продолжает отсчитывать от значения сброса. Я также проверил, что после сброса счетчик переполняется, но по какой-то причине прерывания не генерируются.
Может кто-нибудь сообщить мне, как я могу генерировать прерывание после каждой N инструкций. Любая помощь будет высоко оценена.
1 ответ
Не забудьте очистить бит маски прерывания в регистре счетчика производительности LVT; чтобы включить дальнейшее прерывание. Этот флаг автоматически устанавливается в 1 каждый раз, когда LAPIC обрабатывает прерывание мониторинга производительности, таким образом блокируя любой последующий PMI. Прочитайте главу 10 для Intel по LAPIC.