Windows 7 QueryPerformanceFrequency возвращает 2,4 МГц? - PullRequest
3 голосов
/ 04 мая 2011

Я использую какой-то временной код на разных ОС. Я заметил следующие шаблоны с результатами QueryPerformanceCounter

Стандартная Windows XP использует частоту процессора, что означает использование RDTSC под капотом.

Vista использует HPET, 14,318,180 Гц

В любой версии Windows с / usepmtimer используются часы ACPI, 3579 545 Гц

Windows 7 использует часы неопределенного происхождения, которые возвращают различные числа в диапазоне от 2,4 до 2,6 МГц.

Кто-нибудь знает, какие часы Windows 7 использует по умолчанию? Почему он даже медленнее, чем часы ACPI? Есть ли способ заставить Windows 7 использовать HPET вместо этого?

Ответы [ 2 ]

4 голосов
/ 05 мая 2011

Windows 7 будет выбирать различные источники QPC при загрузке в зависимости от того, какой процессор / оборудование доступно - я думаю, что в SP1 также есть изменения в этом отношении.

Скорее всего, изменение по сравнению с Vista было принято по причинам AppCompat, поскольку на многоядерных процессорах, которые читают RDTSC, они не гарантируют синхронизацию, поэтому при планировании приложений на нескольких процессорах QPC иногда может вернуться назад.и взбесится.

3 голосов
/ 29 февраля 2012

Хорошо, это только частичный ответ, так как я все еще прибиваю его, но эта частота 2x МГц равна номинальной скорости TSC, деленной на 1024.

Попробуйте сделать математику с вашимРезультат QPF и ваша собственная скорость процессора, и она должна быть правильной.

Сначала я думал, что это деление скорости HPET, но это не так.

Теперь вопрос: таймер LAPIC работает на скорости системной шины, но так же, как и TSC (до применения коэффициента мульти), поэтому мы не знаем, какой счетчик используется перед последним делением (это может быть TSC / 1024 или BUS / что-то еще), номы знаем, что он использует кристалл основной материнской платы (тот, который управляет шиной)

Что не звучит правильно, так это то, что в некоторых статьях MSDN кажется, что таймер LAPIC почти не используется (за исключением гипервизора / виртуальных машин), ноучитывая тот факт, что HPET не смог выполнить свои обещания из-за многих проблем с реализацией, и тот факт, что большинство новых платформ имеют инвариантный TSC, они меняют направлениеn снова.

Я не нашел никаких формальных доказательств от Microsoft относительно нового источника, используемого в Win7, хотя ... и мы не можем полностью управлять HPET, даже если он не используется в режиме таймера, его счетчикивсе еще может быть прочитан (например, QPF), но зачем делить его скорость и, следовательно, снижать его разрешение?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...