clflush() в процессорах i3 или i7

Можно ли использовать инструкцию / функцию clflush в процессорах i3/i7 для очистки кеша и проверки, пустой кеш или нет?? Если это так - пожалуйста, предложите правильный формат использования (непосредственно в C или в сборке на C)

Мне сказали, что clflush работает правильно, помимо процессоров Core 2 Duo. Я задаю этот вопрос после перенаправления с этой ссылки (ниже) ------->

¨ Есть ли способ проверить, был ли недавно очищен кэш процессора?¨

мои результаты не соответствуют ожидаемым. Это то, что я получаю эти результаты:

взял 83 тика

взял 66 тиков

флеш: взял 52 галочки

взял 45 тиков

-------------------> Как процессор может брать меньше тиков после очистки кэша? (см. строки 2 и 3 результатов, которые я получил)

1 ответ

rdtsc не является сериализационной инструкцией, так как измерение не является точным. В качестве быстрого взлома вы можете вставить cpuid позвоните, позаботившись об обновлении списка clobber тоже:

asm volatile ("cpuid; rdtsc" : "=a" (a), "=d" (d) : : "ebx", "ecx");

По крайней мере, для меня это изменило результаты в соответствии с ожиданиями.

Другие вопросы по тегам