Это зависит от процессора, который вы используете, обычно cpuid можно использовать для получения большого количества информации о процессоре, а то, что cpuid не предоставляет, обычно доступно через smbios или другие области памяти.
Выполнениеэто в коде общего уровня без функций поддержки процессора и руководства не скажет вам столько, сколько вы хотите с большой степенью уверенности, но может быть полезно в качестве оценки в зависимости от того, что вы ищете и как у вас скомпилирован код, напримерфлаги, которые вы используете во время компиляции и т. д.
В общем, то, что упоминается как зеркальное или умозрительное выполнение и обычно не наблюдается программами, поскольку их логика, определяющая, что переходы через конвейер не используются, затем отбрасывается.
В зависимости от того, как вы используете конкретные инструкции в своей программе, вы можете использовать такую устаревшую информацию о кэше, к лучшему или худшему, но логика в ней будет сильно различаться в зависимости от используемого процессора.
Смотрите всепоэтому Specter и RowHammer для интересных примеров использования таких методов для привилегированного выполнения.
См. комментарии ниже для ссылок, которые имеют код, связанный с использованием cpuid, а также rdrand, rdseed и некоторых других.(rdtsc)
Не совсем понятно, что, возможно, вы ищете, но, безусловно, вы начнете и приведете несколько полезных примеров.
См. также Неправильные прогнозы ветвления