Получить текущую тактовую частоту процессора19.10.2013, 21:52. Показов 5865. Ответов 14
Метки нет (Все метки)
В Интернете я нашёл данный код, задался целью понять, как он работает. Для этого изучил WinAPI функции, которые здесь имеются, и закомментировал то, что они делают. Но всё равно есть несколько вопросов:
1. Зачем нам нужно менять приоритет приложения? 2. Зачем нужна задержка в 10 и 500 мс? 3. Какую работу выполняют данные инструкции на Асме?
0
|
||||||
| 19.10.2013, 21:52 | |
|
Ответы с готовыми решениями:
14
Turbo Pascal!? Как возвратить тактовую частоту процессора? Как выставить тактовую частоту процессора в atmel studio 7.0? Как поднять базовую тактовую частоту процессора AMD Athlon M320? |
|
Модератор
3492 / 2614 / 742
Регистрация: 19.09.2012
Сообщений: 7,977
|
||||||
| 19.10.2013, 22:03 | ||||||
|
Ерунда это все какая-то.
1
|
||||||
| 19.10.2013, 23:01 [ТС] | ||
|
Да и ошибка где-то есть: у вашего кода выводит 2485,957, а у моего 2542,30.
0
|
||
|
Модератор
3492 / 2614 / 742
Регистрация: 19.09.2012
Сообщений: 7,977
|
|
| 19.10.2013, 23:25 | |
|
QueryPerformanceFrequency возвращает текущую частоту процессора.
И почему ты решил, что частота должна "плавать"?
0
|
|
|
Заблокирован
|
|
| 20.10.2013, 03:04 | |
|
FIL,
Вот именно. частота плавает. Она не стабильна. Зачем менять приоритет? А затем. Виндоус система многозадачная. И каждому приложению или процессу отводится доля времени для работы. И это может при подсчёте дать неверные данные. Вот поэтому устанавливается исключительный приоритет. Но устанавливается на короткое время, иначе может произойти крах системы. Первая задержка нужна, чтобы всё "устаканилось" То есть перед измерением нужно дать время для стабилизации приоритета. И тоже самое перед снятием приоритета, и ещё чтобы полученные данные успели "зафиксироватся" поскольку подсчёт идёт на лету. Ну инерция. знаете что такое инерция? Вот и за время задержки идёт погашение инерции. не забывайте. что речь идёт об очень больших частотах. Правда тут нету задержки для перед возвращением приоритета, хотя лучше бы была. Но это как говорится. входит в зону риска... А та задержка, что 500, это время подсчёта. Первый блок на ассемблере снимает текущие показания таймера. Второй блок снимает показания после задержки. За это время набегает куча тиков. Вот эта куча - разность между этими данными. Она вычисляется во втором блоке. Чем больше эта задержка, тем точнее подсчёт, но больше опасность краха. Иногда её рискуют поставить в 1000. А плавает частота по очень простой причине. Кварц намного ниже по частоте. И для создания реальной тактовой частоты используют умножители частоты. Вот они дают некую флукацию (шум). Но это нисколько не отражается на расчётах, поскольку все точные подсчёты привязаны к кварцевому генератору. В СВЧ технике это неизбежно. Если даже мегагерцовая телевизионная частота гуляет, то чего вы хотите от гигагерц?
2
|
|
|
angstrom
|
|
| 20.10.2013, 03:56 | |
|
Я иак понимаю, код взят отсюда. Они там много копий сломали.
|
|
|
Модератор
3492 / 2614 / 742
Регистрация: 19.09.2012
Сообщений: 7,977
|
|
| 20.10.2013, 12:03 | |
|
Частота - штука загадочная.
Например, у меня утилиты, показывающие частоту работы ядер в реальном времени (CPU-Z и т.п.), во время простоя выдают 1.6ГГц, под нагрузкой она возрастает до 3.7ГГц, при этом меняется только множитель. А приведенный тут код выдает все время одно и тоже +-1кГц. Видимо тупо берет частоту шины и множит на 35 (как и QueryPerformanceFrequency, впрочем).
0
|
|
| 20.10.2013, 20:14 [ТС] | |
|
В ходе тестирования было обнаружено, что стандартная API функция QueryPerformanceFrequency работает некорректно: возвращает одно и тоже число всегда, к тому же оно и не соответствует реальному значению (погрешность 60 мГц).
Приведенный мною код работает правильно: т.к. частота "плавает", то и значения всегда разные, кроме того, они довольно точные, погрешность не превышает максимум 1 мГц (в сравнении с CPU-Z). А при увеличении DelayTime и ещё меньше.
0
|
|
|
Модератор
3492 / 2614 / 742
Регистрация: 19.09.2012
Сообщений: 7,977
|
|
| 20.10.2013, 20:18 | |
|
Craw, а у тебя множитель частоты в CPU-Z меняется?
0
|
|
|
Модератор
3492 / 2614 / 742
Регистрация: 19.09.2012
Сообщений: 7,977
|
||
| 20.10.2013, 21:42 | ||
|
0
|
||
|
Модератор
3492 / 2614 / 742
Регистрация: 19.09.2012
Сообщений: 7,977
|
|
| 20.10.2013, 23:09 | |
|
0
|
|
|
Ушел с форума
|
|||
| 20.10.2013, 23:23 | |||
|
чтобы снизить его влияние на процесс измерения частоты CPU к минимуму. На самом деле, все эти потуги с приоритетами и задержками примерно в равной степени как уточняют результат вычислений, так и искажают его (ибо все равно остаются прерывания, переключения контекстов, paging и прочие побочные эффекты, влияние которых нельзя полностью исключить). Это известный способ измерения рабочей частоты процессора.
0
|
|||
| 21.10.2013, 20:30 [ТС] | |
|
0
|
|
| 21.10.2013, 20:30 | |
|
Помогаю со студенческими работами здесь
15
Как поменять тактовую частоту? Влияние АЦП на тактовую частоту МК Процессор перестал повышать тактовую частоту
Нужно понизить тактовую частоту POWER и CHASSIS вентеляторов Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога
Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
|
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
|
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога
В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
|
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
|
|
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога
Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
|
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
|
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования.
Часть библиотеки BedvitCOM
Использованы. . .
|
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога
SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
|