|
|
| Посл.отвђт | Сообщенiе |
|
|
Дата: Июл 18, 2004 10:24:43 Здравствуйте! Нужно определить скорость процессора под Windows 9x/NT. Несколько алгоритмов для определения (с старых исходниках) я нашёл, но не один из них не подходит для определения скорости процессора выше 1 GHz (что сейчас не редкость). Пожалуйста, приведите соурс для определения CPU SPEED в Mhz для MASM. И ещё один вопрос: как определить работает ли процессор на тактовой частоте или разогнан? Заранее спасибо! 1990 |
|
|
Дата: Июл 18, 2004 10:37:31 Тут валяется исходник by Four-F, один на весь форум, и он корректно определяет любые процы, так что не нужно сказок ;-) |
|
|
Дата: Июл 18, 2004 11:03:22 · Поправил: 1990 Asterix Я сказки не рассказываю, а пытаюсь решить конкретную задачу ;-) А вот где исходник - не знаю. В какой теме он завалялся? У меня OFF-LINE версии нет и инет ограничен. Four-F - откликнись и подскажи, где искать твоё творение, пожалуйста. |
|
|
Дата: Июл 18, 2004 13:38:27 http://www.wasm.ru/forum/index.php?action=vthread&forum=3&topic=1188 Но это не мой код. Ещё тут можно посмотреть. HKEY_LOCAL_MACHINE\HARDWARE\DESCRIPTION\System\CentralProcessor\~MHz |
|
|
Дата: Июл 18, 2004 16:54:43 Four-F Спасибо! Второй вариант работает только на w2k и на XP - в 9х этот трюк не пройдёт. |
|
|
Дата: Июл 19, 2004 16:09:29 1990 обычно замеряют время некоторой паузы (типа sleep(100) или sleep(1000)) через rdtsc. замеряющей нитке желательно выставить наивысший (доступный) приоритет на время замера. полученный результат можно округлять до некторой таблицы известных частот (т.к. легко можешь получить типа 2.8000123GHz) |
|
|
Дата: Июл 20, 2004 07:37:22 1990 можно из реестра, а если хочешь конкретности, то в режимае ядра засеки отрезок примером на одну секунду и считай значение MSR регистра командой RDTSC в начале и в конце и вычисли разницу, в качестве ориентира бери время из RTC, оно довольно точно. Исходника дать не могу, поскольку его нет сейчас под рукой, но , мои собственные замеры имели довольно мизерную погрешность, порядка 1500~2000 Гц от номинала на процессоре, но всё это можно списать на нестабильность генератора RTC и процессора. Так что, вот так. Однако не забудь приэтом отключить все прерывания на проц. командой CLI, а то это может принести лишние такты на обработке прерываний более высоких IRQL. Не забудь, что винда при этом тоже повиснет на секунду. После этого , я думаю сам напишешь, если будет интересно. |
|
|
Дата: Июл 20, 2004 07:38:02 Four-F посмотрел я этот код. Какой ужас, Хосспади, зачем всё так сложно то ??????? |
|
|
Дата: Июл 22, 2004 01:27:27 CARDINAL, а ты не смотрел код функции KiInitMachineDependent в w2k_src\private\ntos\ke\i386\kernlini.c ? |
|
|
Дата: Июл 24, 2004 09:52:03 ALL, Спасибо! Max Я понял указанный метод и его реализовал. CARDINAL Интересно... Попробую сделать, но также интересно взглянуть на сорсы. Я думаю, что тема закрыта. |