Вообще говоря, я не планировал делать 'автономную' программу,
но, увы, потратил значительно больше времени, чем планировал. Программа
предназначалась для тестирования корректности моей работы с установкой частоты процессора.
Первая версия (0.1.1) может управлять частотой процессора от его загруженности.
Если CPU не загружен, то частота медленно снижается до минимального уровня,
а при появлении признаков загрузки частота возвращается к первоначальному значению.
Для первой версии нижняя частота 70MHz, что обеспечивает 2-3-кратное изменение частоты,
что снижает потребление процессора в соответствующее число раз. Ставить меньшее 70MHz
вряд-ли целесообразно, появятся поблемы с стабильностью памяти, да и как-то не имеет
особого смысла. Например, при наличии звуковых карт типа Audigy включение опции
Bus disconnect в BIOS приводит к меньшей эффективности. Для AMD Athlon XP (Barton)
при 1.65V на частоте 2.2G типичное потребление покоя составляет 42W, с включением
Bus disconnect 17W, при уменьшении частоты FSB с 210MHz до 70MHz - 15W. Никаких внешних
проявлений работы программы я не обнаружил (правда, это не означает, что их нет -
программа мало тестировалась). Т.к. изменение частоты происходит очень плавно,
то помехов в блоке питания и внешних цепях не возникает, как и резких тепловых скачков процессора,
которые могут вызвать повреждение кристалла. Кстати, это основная причина почему я ограничил
нижнюю частоту весьма большой цифрой .... можно еще в 1.5-2 раза меньше.
В версии 0.2 введено управление напряжением.
В 0.3 - внутренние параметры программы можно настраивать, несколько расширились
возможности, исправил некоторые ошибки.
Описание работы.
Программа смотрит загруженность процессора и если она очень низкая,
то начинает плавно снижать частоту. При загрузке процессора происходит обратный процесс,
причем скорость повышения частоты быстрее, чем снижения. Кретерий повышения частоты - загрузка
процессора выше 50%. Две эти меры позволяют восстанавливать частоту заранее, меньше
коллизий.
Программа стартует свернутой в tray, при необходимости ее можно оттуда вытащить
или двойным кликом левой кнопкой мыши или правым. Кроме того, однократное нажатие
на иконку включает-выключает управление частотой. При выключении (как и при выходе из программы)
частота восстанавливается в максимум. За максимальное значение принимается значение BIOS.
Внешний вид.
Обычный.

Развернутый.

В нормальном, свернутом режиме, программа показывает:
первая строка: загрузка процессора (0...100%) и предполагаемую мощность процессора (0...100%).
Увы, показывать не относительную, а абсолютную мощность не представляется возможным.
Даже для одной и той-же модели процессора мощность может различаться весьма существенно.
Например, у меня были два AMD Athlon XP (Barton) с одинаковым ID, но выпущенные в разное
время. На частоте 2.2G и напрядении 1.7V один из них рассеивал 75W, второй 96W.
Наверно, при анализе большего числа процессоров разброс мощностей окажется еще значительнее.
вторая строка: текущие параметры - частота FSB, памяти и напряжение процессора.
третья строка: максимальные параметры - частота FSB и напряжение процессора. Для v0.3.10(11)
максимальный FSB еще и можно изменить в файле настроек, а вот напряжение чисто декларативно,
потому выводится серым. Этот параметр не используется в программе (v0.3.10/11).
четвертая строка: - частота и напряжение на момент запуска программы. Это максимальные параметры.
(правда, максимальную частоту можно несколько изменить - см. выше)
Под информационным полем имеется 2 кнопки:
включения/выключения автоматическим управлением
переход на мою страничку в интернет
кнопка разворачивания.
При нажатии на кнопку '>>' окно увеличивается и становятся доступны средства настройки.
FSB:
min - устанавливает минимальную частоту FSB, ставится о начального значения частоты FSB до
аппаратно доступного. Обычно это 70MHz. Параметр в ini - 'Fmin{/10}'. Устанавливает
минимальную частоту FSB, указывать число в 0.1MHz. Т.е. 700 будет означать 70MHz.
max - устанавливает максимальную частоту FSB (в версии v0.3.10(11) не реализовано)
Параметр в ini - 'Fmax{/10}'. Устанавливает максимальную частоту FSB. Увы,
в v0.3.10(11) реализовано плохо, не должен сильно отличаться от начальной частоты.
Voltage:
min - минимальное напряжение на процессоре при минимальной частоте. Для плат
nForce2 это может быть от 1.1V до начального(при старте программы) напряжения на процессоре.
Параметр в ini - 'Vmin{/1000}'. Устанавливает минимальное напряжение
на процессоре, число в mV.
max - максимальное напряжение. (в версии v0.3.10(11) не реализовано)
Параметр в ini - 'Vmax{/1000}'.
Precomp.V:
low - устанавливать минимальное напряжение не при самой минимальной частоте, а
несколько раньше (бОльшей частоте). Это несколько уменьшает мощность и при несильной
загрузке прцессора позволяет вообще не менять напряжение, что значительно уменьшает
тепловые удары (резкое изменение тепловой мощности) процессора.
Параметр в ini - 'CompVmin', имеет значение от 1 до 99%.
high - аналогичный параметр, только наоборот. Эта прекомпенсация устанавливает
максимальное напряжение на несколько меньшей частоте, чем максимальное. Точка с максимальным
напряжением и частотой, как правило, обладает неибольшей неустойчивостью при
регулировании и эта компенсация позволяет выставлять максимальную частоту более 'мягко'.
Параметр в ini - 'CompVmax', имеет значение от 1 до 99%.
Установка любого параметра из этой группы возможна токо по кнопке 'apply'. Это
сделано для корректной смены режимов.
Вторая группа параметров не столь серьезно сказываются на устойчивости программы
и регулируют realtime, без каких-либо кнопой 'применить'.
CPU load %
Fup - порог загрузки процессора, при котором программа начинает повышать частоту (1...99%).
Параметр в ini - 'CPUprcUp', может иметь значение от 1 до 99%, но не
меньше CPUprcDown.
Fdown - аналогично, порог для понижения частоты.
Параметр в ini - 'CPUprcDown', может иметь значение от 1 до 99%, но не
больше CPUprcUp.
Speed:
Fup - скорость повышения частоты. Режимы 'fast' отличаются меньшими временными
интервалами на установку, но весьма значительно загружают процессор. В некоторых случаях
это может быть неприемлемо.
Параметр в ini - 'SpeedUp', может иметь значение от 0 до 7, что соответствует
восьми положениям движка настройки и есть: x1, x2, x4, x8, fast1, fast2, fast4, fast8.
Fdown - аналогично, скорость понижения частоты.
Параметр в ini - 'SpeedDown'. Аналогично предыдущему параметру.
Delay to:
Fup - задержка перед повышением частоты.
Параметр в ini - 'DelayUp', может иметь значение от 0 до 10 (секунд). При 0
задержка отключается.
Fdown - задержка перед понижением частоты. Это может быть удобно, когда, например,
в играх делается небольшая пауза для загрузки уровня и чтоб при этом не происходило
уменьшение частоты, можно выставить задержку. Иначе после загрузки уровня компьютер
будет 'тормозить' до восстановления максимальной частоты.
Параметр в ini - 'DelayDown'. Аналогична предыдущему параметру.
filtered 'CPU load' for level up/down - использовать не мгновенную, а
усредненную загрузку процессора для уровней повышения/понижения частоты.
fast clock recovery - когда программа выключается, то она обязана возвратить
частоту и напряжение таким, каким оно было на момент запуска. Т.е. при выходе из программы
происходит 'аварийное' восстановление. Этот параметр может задать нормальную или увеличенную
в 2 раза скорость восстановления.
Параметр в ini - 'FastRestoreClock'. Принимает два значения - 0 = выключено и 1 = включено.
enable Bus Disconnect - очень опасная функция, особенно если BIOS mainboard
не имеет опций управления Bus Disconnect. Как правило, это означает, что аппаратура
плохо работает с этой функцией(Bus Disconnect). Это может порождать различные шумы,
да и сказываетя на стабильности работы процессора.
Попутно индицируется состояние Bus Disconnect на момент запуска программы. У меня говорится, что это BIOS,
но может быть и не так, если запускались какие-дибо программы для управления этой функцией.
Параметр в ini - 'EnableBusDisconnect'. Принимает два значения - 0 = выключено и 1 = включено.
Что-либо изменив, не забывайте нажимать кнопку 'save'!
Кроме того, есть настройки в ini, которые не отображаются в окне программы.
AlwaysTrayIcon - не убирать иконку из трея при максимизации.
EnableIOcaching - кешировать работу с портами. При этом уменьшается
загрузка процесоора, но другие программы могут захватить управление напряжением/частотой,
что может привести к зависанию. Если у Вас не запускаются такие программы, наверно стоит включить эту опцию.
EnableVoltageControl - разрешить программе управлять напряжением процессора.
EnableAccessBusDisconnect - разрешить управлением Bus Disconnect.
С левой стороны окна программы есть два графика.
Левый рисует состояние напряжения/частоты, правый - графики загрузки процессора
частоты и предполагаемой мощности процессора.
На левом графике по горизонтали отложена частота от минимального до максимального
значения, а по высоте - напряжение. Бегущая желтая точка показывает текущее
напряжение/частоту.
На правом графике:
мгновенная загрузка процессора
усредненная загрузка процессора
частота FSB в процентах от мин. до макс. значения.
предполагаемая мощность процессора, усреднено.
Ограничения.
Программа работает только на chipset'е nForce2. Выпуск программы для других chipset'ов
процессора К7 не планируется. Под К8 - когда появится соответствующее 'железо'. 'Теоретический'
перенос программы невозможен, слишком много неописанных проблем с аппаратурой (банальное отсутствие документации).
Программа может работать только тогда, когда установлен синхронный режим памяти.
Эту проблему можно обойти, хоть и очень дорогой ценой, но ... как-то не очень нужно - при установке
несинхронного режима памяти потери производительности подсистемы памяти настолько велики, что не
могут быть скомпенсированы завышенной частотой памяти. Подробнее см. в BenchMem.
Не работает под W9x. Причин 'больше одной', потому не будет.
Что, где, ...???
AMD K7 на nForce2:
Текущая версия: 0.3.11.
Версия для процессоров Intel Core2 с аналогичными функциями (CnQC2).
Текущая версия: 0.5.8.
При работе на процессорах Core2 обнаружился интересный момент - срабатывание термозащиты
при низкой температуре по DTS (внутренние датчики температуры на ядрах процессора).
Предполагается, что термозащита TM2 должна срабатывать при приближении к пороговой Tj
(100 градусов для Core2). В случае, если TM2 не способна справится с повышенной температурой,
должна срабатывать TM1. Естественно, механизм TM1 должен (бы) срабатывать при температуре
больше Tj. Но увы, я наблюдал падение производительности процессора при температурах
горазо ниже Tj (по DTS). Причем, эта температура срабатывания имела большой гистерезис и явно
слабо зависела от DTS. Скорее это зависело от температуры радиатора (крышки). Значит это не TM2 и
не по DTS. Видимо, TM1.
В большенстве матплат нельзя отключить термозащиту TM1, поэтому добавил это свойство
в C&QC2.
Посмотрите на температуры в разделе Core's - они далеки от 95 градусов. Причем, этот деструктивный
момент я наблюдал и на двухядерном Core2 E6600 и на Core2 Q6600.

На вкладке 'Overheat' появились соответствующие настройки:
Skip:
TM1 - отключить срабатывание аппаратного механизма TM1. Однако, программа продолжает
контролировать индикацию его работы и при необходимости (см. HW. OHT) может выполнять его действия.
TM2 - аналогично TM1.
HW. OHT - просто небыло места. Это HardWare OverHeat detector. Если включить эту опцию, то программа
будет игнорировать индикацию заблокированных механизмов TM1, TM2 и ограничивать частоту процессора
только по данным температуры мониторинга (по DTS). Собственно, ради этого все и затевалось.
C1E - блокировать технологию расширенного Halt. Т.к. напряжением управляет моя
программа, то в C1E нет совершенно никакого смысла (мощность потребления простаивающего процессора
не зависит от его частоты, а только от напряжения). Пользу от C1E нет, а вот вред есть - при импульсных
нагрузках (обмен с внешними устройствами типа USB &etc) обработка выполняется на пониженной частоте.
Короче, это надо выключать.
Lowest Ratio&VID at Throttling detected. - при обнаружении аппаратной (TM1/2) индикации
срабатывания термозащиты сразу ставить минимальную частоту и напряжение.
State: TM1, TM2 - индикация состояния мезанизмов тепловой защиты. Если зеленый,
то нормально. А вот красный - беда.
Выглядит это так:
