Небольшой обзор технологии Winbond SmartFAN
Эта работа была прислана на наш "бессрочный" конкурс статей. Автор получил поощрительный приз - бейсболку с логотипом компании Acer.
Многие ли из нас при покупке материнской платы обращали хоть какое-то маломальское внимание на так называемую микросхему ввода-вывода (SuperI/O)? Думаю, что практически никто. И очень зря :-) Надеюсь, что после прочтения этой статьи наличие на материнской плате той или иной модели микросхемы ввода-вывода будет играть для вас не менее важную роль, чем остальные технические параметры материнской платы.
ПРЕДОСТЕРЕЖЕНИЕ! Приступайте к практическому воплощению описанного в статье материала только после внимательного прочтения статьи и уяснения всех описанных тонкостей и потенциальных опасностей. Никакой ответственности за испорченное Вами в результате необдуманных экспериментов оборудование я не несу! Действуйте на свой страх и риск!
Не разгоном единым...
Если вы постоянный посетитель этого сайта и участник посвященного ему форума, то наверняка заметили следующую тенденцию: многие оверклокеры заинтересованы не только в максимальной производительности своей системы под нагрузкой, но стали больше уделять ей внимания в моменты простоя, когда добытые с таким трудом мегагерцы отходят на второй план, а на первый выходят температура и шумовые характеристики системы охлаждения. Именно этим можно объяснить большую популярность в народе средств понижения температуры процессоров в простое, таких как (на примере процессоров AMD):
реклама
- включение функции Bus Disconnect посредством S2kCtl, BiosPatcher;
- использование программы 8RDA_Vcore для понижения частоты FSB и напряжения на процессоре на материнских платах с чипсетом nForce2;
- использование программ CPUMSR и CrystalCPU для понижения множителя процессоров AMD, переделанных в мобильные, на чипсетах VIA, SiS, AMD, ATI; процесс изменения множителя можно автоматизировать, если наделить материнскую плату частичной поддержкой технологии PowerNow!
После понижения температуры процессора в простое можно притормозить вентилятор, снизив тем самым шум системы охлаждения. К сожалению, выбор средств для управления оборотами вентилятора не настолько широк, как хотелось бы. Назову лишь наиболее известные:
- Программное управление на уровне приложений операционной системы. Примером может служить все та же 8RDA_Vcore и всем известный SpeedFan.
- Ручное управление. Подключение кулера через переменный резистор – способ доступный всем, но на практике его применяют только, если не знают о программном способе, или если он не подходит/не поддерживается материнской платой.
- Посадка вентилятора на 5/7 вольт или использование постоянного резистора – этот способ можно исключить из рассмотрения из-за его жуткой непрактичности :-(
Вот, пожалуй, и весь арсенал. Что-то я не припомню, чтобы в форумах обсуждались другие способы. А ведь по крайней мере существует еще один реально работающий метод! Именно ему и посвящена статья. Но обо всем по порядку.
Как это было ...
На моем рабочем компьютере уже больше 2-х лет работает материнская плата EPoX 8KHA+ (ViA KT266a). И жил бы я сейчас спокойно, если бы в один из февральских дней не запустил на нем SpeedFan v.4.09. И о чудо: с его помощью я смог регулировать вращение двух вентиляторов. "Чудо" потому, что до этого мною в форуме не было встречено ни одного сообщения о присутствии такой возможности на материнских платах фирмы EPoX. Когда же удалось настроить Automatic Fan Speed, радости моей не было предела. Но счастье длилось, увы, недолго :-( Не знаю, что случилось, но однажды автофан работать отказался. Вручную обороты регулировались, а автоматически – нет.
Других программ подобного назначения мне на глаза не попалось. Зато совершенно случайно в руках оказалась распечатка замечательной конкурсной статьи "Системы контроля здоровья PC" (13 ноября 2003 г., автор Муратов А.Л.), где упоминалось название очень интересных фирменных технологий по регулированию оборотов вентиляторов на аппаратном уровне, реализованных в некоторых микросхемах Super I/O фирм Winbond и ITE. Т.к. из упомянутых в статье чипов с поддержкой этой функции в моих материнских платах (рабочей, домашней) ни один не присутствовал, то пришлось обратиться на сайт винбонда за уточнением. Оказалось, что установленная на EPoX 8KHA+ микросхема Winbond W83697HF поддерживает таки технологию SmartFan! Осталось найти софт для включения и настройки "скрытых" возможностей термоконтроля. Но его я так и не обнаружил (может плохо искал?) Пришлось качать даташит, чтобы оценить, реально ли сделать что-либо своими силами. Хоть я и не считаю себя программистом, но программирование этой микросхемы оказалось делом несложным, даже для меня.
WCruiser
реклама
Так, собственно, и появилась на свет моя программка, которую я назвал WCruiser (32 КБ). Ей всего месяц с небольшим от роду (с 9 марта 2004г.), и поэтому она еще довольно примитивна: консольный режим, все параметры работы настраиваются через конфигурационный файл, небольшое количество поддерживаемых чипов. Но для исследовательских целей ее возможностей достаточно. Предназначена программа для управления (включение/настройка/отключение) технологией Winbond SmartFan, точнее ее подмножеством Thermal Cruise. Есть еще несколько вариантов использования (подробности см. в ReadMe.rus)
Вполне вероятно, что вскоре, когда аналогичные функции (возможно) начнут поддерживаться, например, тем же SpeedFAN’ом, необходимость в моей утилитке отпадет. И я буду этому рад, т.к. (еще раз повторю) я не являюсь профессиональным программистом, и более чем уверен, что в SpeedFAN’e эти функции будут реализованы гораздо качественнее (в первую очередь касается интерфейса и совместимости с WinNT).
Технология SmartFAN от Winbond.
Составные части этой технологии: "Thermal Cruise" и "Fan Speed Cruise". Начну с последней.
Целью Fan Speed Cruise является удержание оборотов вентилятора в строго заданных пределах (нечто вроде электронного маховика). Мне сложно представить, кому и при каких условиях это может потребоваться. Единственный возможный случай – необходимость ограничить максимальные обороты очень быстрого (и потому очень громкого) вентилятора. Но тогда Вы не сможете одновременно задействовать режим ThermalCruise. Поэтому на практике лучше ограничивать максимальные обороты с помощью резистора. Если у Вас есть какие-либо другие соображения по поводу использования Fan Speed Cruise, то просьба поделиться ими в конференции.
ThermalCruise
Назначение: регулирование температурного режима процессора и компонентов материнской платы.
Реализована в следующих моделях SuperIO:
Краткое описание технологии:
Микросхема SuperIO может управлять температурным режимом нескольких объектов. Каждому объекту сопоставляется пара:
- температурный датчик для регистрации текущей температуры объекта;
- прибор, способный изменять степень охлаждения объекта пропорционально напряжению, подаваемому на его входы; в качестве охладителя обычно используется вентилятор :-) , но никто не мешает приспособить для этих целей, например, помпу водянки.
Далее для удобства восприятия материала будем полагать, что в качестве охладителя используется именно вентилятор.
Технология ThermalCruise не предусматривает использование какой-либо другой информации, кроме температуры объекта, для управления его температурным режимом. Поэтому, например, в случае использования вентилятора в качестве охладителя, вовсе не обязательно наличие на нем тахометра.
Число обслуживаемых объектов (число пар термодатчик-вентилятор) определяется моделью микросхемы:
реклама
- для W83697HF это число = 2
- для всех остальных (W83627THF, W83637HF/ W83647HF) = 3
В качестве объектов наблюдения может выступать все что угодно, лишь бы можно было измерить температуру этого объекта и менять степень его охлаждения. Традиционно в качестве объектов выступают процессор и компоненты материнской платы. Микросхема I/O получает данные о температуре объекта и на их основании решает, какое напряжение подать на вход охладителя.
Прежде чем продолжить повествование, необходимо сделать пару замечаний.
Замечание 1: Поскольку мы уже условились в качестве охладителя подразумевать вентилятор, то будем считать, что его обороты прямо пропорциональны напряжению на его входах. В дальнейшем, когда будет встречаться фраза "чип увеличил обороты вентилятора", то это означает: "чип повысил напряжение, в результате чего обороты вентилятора увеличились".
Замечание 2: Напряжение на вход вентилятора выдается согласно значению однобайтового регистра (на графиках обозначается как PWM Duty Register). Чем значение этого регистра больше, тем выше напряжение на вентиляторе. Соответственно: 0 означает, что вентилятор выключен, а 255 – что работает на максимальных оборотах. Будем подразумевать, что зависимость между значением регистра и напряжениями/оборотами линейная.
К сожалению, на практике на большинстве моделей материнских плат зависимость далека от линейной. Например, в материнских платах от EPoX при увеличении значения регистра от 0 до ~25 (10%) обороты вентилятора возрастают от 0 до 95%. В ASUS P4P800 Gold зависимость принимает забавный ступенчатый вид.

Необходимо также понимать, что у реальных вентиляторов существует минимальное пороговое напряжение, при котором вентилятор начинает раскручиваться. Если напряжение, соответствующее текущему значению регистра PWM Duty, меньше порогового, то вентилятор останется неподвижен.
Алгоритм управления, используемый чипом:
Чип пытается удержать температуру объекта в заданном температурном коридоре, который определяется двумя параметрами:
Target Temperature – целевая температура (центральная ось этого коридора) (по умолчанию =0) |
Tolerance of Target Temperature – предельные отклонения от целевой температуры (см. Рис.2) (по умолчанию =0) |
При этом:
- Если температура объекта находится в пределах указанного температурного коридора, то обороты вентилятора не изменяются (всегда фиксируются на текущем значении).
- Если температура объекта растет и пересекает верхнюю границу коридора (Target+Tolerance), то вентилятор включается (если был выключен) и постепенно (в зависимости от Step Up Time) набирает обороты со стартовых (соответствующих Start-Up Value) вплоть до максимальных. Если температура снизилась и оказалась внутри коридора, то обороты фиксируются (даже если максимальные обороты еще не набраны) (См.п.1). Теоретически, если обороты вентилятора максимальны, а температура все еще выше верхней границы, то через 3 минуты должен сработать звуковой сигнал тревоги, но на практике я с этим явлением не сталкивался.
- Если температура упала ниже нижней границы коридора (Target—Tolerance), то обороты вентилятора постепенно (в зависимости от Step Down Time) уменьшаются до заранее заданного значения (соответствующего Stop Value). Затем, если разрешено (FanMinDuty=0), вентилятор по истечении некоторого времени (Stop Time) отключается. Если процесс понижения оборотов еще не достиг заданного минимального значения, а температура объекта поднялась и пересекла нижнюю границу коридора, то обороты вентилятора фиксируются (даже если минимальные обороты еще не достигнуты) (См.п.1)
Дополнительные пояснения по параметрам (и соответствующим одноименным регистрам), упомянутым выше в описании алгоритма:
Start-Up Value (Start-Up Duty) – характеризует напряжение, которое будет сразу же подано на вентилятор при достижении температурой верхней границы температурного коридора.
00 --> вентилятор отключен; |
255 --> напряжение (соответственно и обороты) максимальны. (по умолчанию =01) |
Stop Value (Stop Duty) – величина, до которой напряжение на вентиляторе будет постепенно снижено, после того, как температура опустится и пересечет нижнюю границу температурного коридора.
00 --> вентилятор отключен; |
255 --> напряжение (соответственно и обороты) максимальны. (по умолчанию =01) |
Step Up Time – характеризует скорость увеличения напряжения на вентиляторе Задает период, в течение которого напряжение на вентиляторе увеличится на 1/256 от максимального. Выражается в единицах. Одна единица соответствует интервалу времени в 0,1 секунды/ед. (по умолчанию =10)
Примеры:
- 10 ед (значение этого параметра по умолчанию). Увеличение напряжения на 1/256 произойдет в течение 10 ед*0,1(сек/ед) = 1 (секунда). Увеличение оборотов с нуля до максимальных соответственно произойдет за 255*1 секунда = 255 секунд = 4 минуты 16 секунд
- 0 ед. Увеличение оборотов до максимальных произойдет мгновенно.
- 255 ед.-> 6502,5 секунд= 108,375 минут=1 ч 48 мин
Полное время, затраченное на увеличение напряжения с PWM до максимального, составит: Time=(256-PWM) *(0.1* StepUpTime)
Step Down Time – полностью аналогичен предыдущему параметру, только задействован при понижении оборотов; Полное время, затраченное на уменьшение напряжения с максимального до PWM, составит: Time=(256-PWM) *(0.1* StepDownTime)
Примечание: к сожалению, на практике значение StepDownTime=0 не соответствует моментальному понижению значения регистра PWM Duty – оно все равно длится в течение нескольких секунд :-( (по умолчанию =10)
Stop Time – время в течение которого чип держит вентилятор на минимальных оборотах, прежде чем отключить его (если отключение разрешено параметром FanMinDuty) (по умолчанию =60 sec)
FanMinDuty – разрешает (=0) или запрещает (=1) отключение вентилятора. (по умолчанию =0)
Для иллюстрации материала приведу несколько графиков. Ключевые моменты на них отмечены окружностями разного цвета (желтыми, фиолетовыми).
Красная линия – график зависимости температуры от времени.
Синяя линия – график зависимости подаваемого на вентилятор напряжения (PWM Duty, PWM Value) от времени. Поскольку мы уже условились считать зависимость оборотов вентилятора от напряжения линейной, то можно условно считать, что синяя линия отображает так же изменение оборотов по времени.
Названия параметров Step Up Time и Step Down Time приведены лишь для иллюстрации промежутков времени, на протяжении которых они используются. Фактически же эти параметры характеризуют степень наклона графика зависимости напряжения от времени: чем больше эти величины, тем более полого идет график.

Комментарии:
- A) изначально нагрузка на процессор минимальная, температура также минимальна; поскольку она находится ниже нижней границы температурного коридора, то вентилятор отключен;
- B) повышение нагрузки на процессор (пользователь или операционная система запустили какую-либо программу) привело к повышению его температуры;
- C) при достижении температурой верхней границы температурного коридора, чип включил вентилятор и пока температура превышала верхнюю границу, довел обороты вентилятора до максимальных;
- D) это позволило сбить температуру и удерживать ее внутри температурного коридора;
- E) после уменьшения нагрузки на процессор температура понизилась еще сильнее и пересекла нижнюю границу коридора; на это чип отреагировал постепенным уменьшением оборотов вентилятора до минимальных;
- F) некоторое время обороты вентилятора удерживаются на минимальном уровне;
- G) затем чип перестает подавать напряжение на вентилятор, тем самым отключает его.

Комментарий: На этом графике изображен случай, когда все временные параметры, влияющие на скорость изменения оборотов, равны нулю. На все ключевые моменты чип реагирует либо моментальным включением вентилятора на полную мощность, либо моментальным его отключением.
Следующий рисунок дополняет предыдущий и представляет из себя график зависимости напряжения, подаваемого на вентилятор, от температуры объекта.


Комментарий: Здесь изображен случай, когда обороты вентилятора не успели достигнуть максимальных и были зафиксированы. Причина: пересечение температурой верхней границы коридора в сторону понижения.
Методика подбора параметров.
Подозреваю, что методики, позволяющей на основе каких-то данных сразу выбрать нужные параметры, не существует. На эту тему можно диссертацию писать. Я лишь попытаюсь обратить внимание на общие моменты.
Многое зависит прежде всего от используемого железа: мощности процессора, от производительности вентилятора, способностей радиатора по отбору и рассеиванию тепла, температурного режима в корпусе (наличия дополнительных вентиляторов)
Не последнюю роль играют предпочтения пользователя (его психическое состояние и отношение к шуму) и время года (температура в помещении)
Можно выделить две основные стратегии подбора параметров для случая, когда компьютер простаивает. Назовем их стратегией пульсаций и стратегией постоянства.
#1 Стратегия ПУЛЬСАЦИЙ:
Время работы вентилятора на максимальных оборотах сменяется продолжительной паузой, когда он отключен ("фаза тишины"). Обычно несложно подобрать параметры так, что время работы будет в несколько раз меньше времени, в течение которого вентилятор остановлен.
Отношение времени работы вентилятора к времени его простоя пропорционально мощности, потребляемой процессором, и обратно пропорционально:
- разности температур (Tolerance*2);
- мощности (производительности) вентилятора на максимальных оборотах;
- скорости изменения оборотов вентилятора (StartUpValue, 1/StepUP, 1/StepDOWN);
- теплопроводным свойствам радиатора (зависит от массы, размера, материала, пр.);
Настройки:
(Target + Tolerance) - максимально допустимая температура. |
(Target - Tolerance) - минимальная температура, до которой кулер может охладить простаивающий процессор; |
StartUpValue=255, |
StopValue=0. |
FanMinDuty=0 - важно не забыть разрешить отключение вентилятора |
StopTime =0 (значения не имеет, т.к. StopValue=0) |
StepDOWN=0 |
StepUP =0 (значения не имеет, т.к. StartUpValue=255) |
Этот вариант вне конкуренции для случая, когда температура процессора в простое при пассивном охлаждении держится ниже Target+Tolerance: вентилятор выключен постоянно. В проводимых мною опытах система переходила в такое состояние при температуре в помещении=22 градуса. При повышении внешней температуры всего на ~3 градуса равновесие нарушалось.
Достоинства этого способа: один раз настроил и забыл. |
Недостатки: В периоды, когда вентилятор работает, шум от него максимальный. |
Пример из практики:

Комментарий: Из графика видно, что активная фаза раз в 6-7 меньше фазы тишины. Для менее горячих процессоров это отношение будет еще больше.
Интересное наблюдение: по графику видно, что температура процессора опускается ниже нижней границы коридора аж на 2-3 градуса. Увидев это, я сначала подумал, что где-то закрался баг. Все перепроверил, но ошибок не обнаружил. Потому решил все списать:
- на инерционность термодатчика;
- на тот факт, что вентилятор, как уже упоминалось выше, не смотря на значение StepDown=0, на остановку все же затрачивал несколько десятков секунд;
Тогда возникает вопрос: почему температура на графике не превышает значение верхней границы? Ответы:
- процесс нагревания происходит гораздо медленнее процесса активного охлаждения (1 градус в минуту против 1 градуса за 10 секунд), поэтому инерционность датчика скрадывается;
- обороты вентилятора достигают максимальных значений практически мгновенно.
Конфигурация системы:
- ASUS P4P800 Gold;
- Intel Pentium4 2.6 GHz;
- кулер стандартный интеловский на 2700 оборотов в минуту; (остальное не суть важно)
Настройки:
Target=42 градуса Цельсия |
Tolerance=5 градусов Цельсия |
(остальные те, что я предлагал выше при описании стратегии) |
Примечание: Желательно непосредственно перед применением этого метода повысить обороты вентилятора до максимальных или отключить вовсе (занести в регистр PWM Duty 255 или 0). Иначе в случае с вентилятором, работающем на промежуточных оборотах, "качели" (можно так назвать рассматриваемую стратегию) заработают только после выхода температуры за границы коридора. А это событие при определенных условиях может наступить нескоро.
#2 Стратегия ПОСТОЯНСТВА:
Вентилятор работает на оборотах, обеспечивающих постоянство температуры процессора в простое. Очевидно, что чем выше поддерживаемая температура, тем меньшие обороты вентилятору требуются, чтобы удержать ее от изменений, тем тише он работает.
Типичные настройки:
Target + Tolerance – как и в предыдущем случае, соответствует максимально допустимой температуре |
Target – Tolerance – должна быть немногим меньше Target + Tolerance; |
FanMinDuty=1 – необходимо запретить выключение вентилятора; |
StartUpValue =StopValue – необходимо установить значение, позволяющее вентилятору при простое процессора удерживать его температуру в рамках температурного коридора; |
StepDOWN, StepUP – на усмотрение пользователя. |
StopTime = любое (не имеет значения, т.к. вентилятор не отключается) |
Ключевыми параметрами в этом случае являются: StopValue=StartUpValue.
В случае использования этой стратегии можно идти двумя путями:
- определиться с максимальной температурой в простое и подбирать под нее обороты вентилятора;
- выбрать обороты вентилятора, на которых шум он него минимальный, и проверить температуру процессора при этих оборотах: не выше ли она максимальной температуры?
Достоинства этого способа: вентилятор работает на оборотах меньше максимальных, поэтому шум от него тоже меньше максимально возможного. Если повезет, то на выбранных оборотах вентилятор практически не будет слышно. Недостатки: требуется попотеть с подбором значений для ключевых параметров, особенно StopValue.
Какой из методов более предпочтителен – решайте сами :-) Можно попытаться выбрать нечто среднее. Например:
Стратегия КОМБИНИРОВАННАЯ:
Является, по сути, модификацией стратегии ПУЛЬСАЦИЙ. В основе лежит тот факт, что для каждого вентилятора можно подобрать такие обороты, что его практически не будет слышно. Пусть на этих оборотах он не сможет достаточно хорошо охлаждать процессор, но он значительно продлит "фазу тишины".
Необходимо изменить следующие параметры стратегии ПУЛЬСАЦИЙ:
StopValue – установить значение, при котором вентилятор работает, но шум от него ухо практически не воспринимает; |
FanMinDuty=1 - запретить отключение вентилятора |
Списки
Список материнских плат, на которых применены и правильно распаяны указанные микросхемы (составлен на основе личного опыта):
(W83627THF) |
ASUS P4P800 (i865PE) (на версии GOLD правильно разведен только CPUFAN(FAN2)) |
(W83697HF) |
EPoX EP-8KHA+ (KT266A) |
EPoX EP-8K9A (KT400) |
ВНИМАНИЕ! На упомянутых в списке платах от EPoX для правильного функционирования технологии обязательно подключайте кулер процессора не к разъему, промаркированному на плате как CPUFAN/FAN1, а к SYSFAN/FAN2. Мне до сих пор не понятно, чем объяснить это странное упущение со стороны инженеров столь именитой компании :-(
Черный список. Чипы Super I/O с поддержкой SmartFan присутствуют, но должным образом не распаяны. В список также входят все материнские платы, в которых отсутствует температурный мониторинг (практически все платы от EVI, очень многие от DFI):
(W83697HF) |
ASUS A7V8X-MX (KM400) |
EPoX 8KRI (KT600) |
(W83637HF) |
ECS 848P-A v1.0 (i848P) |
ВНИМАНИЕ! Первоначально в черный список я хотел занести все платы, на которых кулер процессора подключается не к FANOUT1, а к FANOUT2 (как, например, на абсолютно всех протестированных мною EPoX’ах). Но потом отказался от этой идеи, поскольку данный огрех разработчиков можно исправить, подключив вентилятор к другому (правильному) разъему. Будьте бдительны! :-)
Интересный вопрос.
Возникает закономерный вопрос: почему поддержка технологии SmartFan (Thermal Cruise) не афишируется и не популяризируется на данный момент ни производителями материнских плат, ни самой фирмой WinBond. Казалось бы, что стоит встроить такую поддержку в BIOS или выпустить официальную утилиту-конфигуратор? Ведь выгода для конечного пользователя очевидна. Соответственно в условиях жесткой конкурентной борьбы из этой технологии можно было бы извлечь пользу. В чем дело?
На мой взгляд, существует очевидный ответ на этот вопрос: рассматриваемая технология столь же ОПАСНА, как и полезна. И никто из цепочки производителей (микросхемы, БИОС, материнской платы) не хочет брать на себя потенциальной ответственности за испорченное конечным пользователем оборудование. Ведь для правильного функционирования необходимо не только наличие самой технологии – необходимо обеспечить ее полную работоспособность. А это целый комплекс условий:
- правильно спроектированная материнская плата, с откалиброванными датчиками температуры;
- грамотно собранный компьютер с вентиляторами, подключенными к правильным разъемам;
- правильно подобранные/настроенные, проверенные практикой параметры, относящиеся к SmartFan; они могут отличаться в зависимости от установленного процессора, используемого кулера, корпуса, др.
Гарантированно соблюсти все эти необходимые требования могут только именитые брэнды, производящие готовые компьютеры и ноутбуки. Очевидно, что им нет никакого резона рекламировать чужие (в данном случае винбондовские) технологии.
Так и живем в неведении ...
...Точнее, я жил. Ибо когда набивал предыдущую строку, то слышал, но еще не знал о сути технологии Q-Fan от ASUS. Но об этом поподробнее ...
Несколько слов о технологии Q-Fan от ASUS
Для исследований я выбрал материнскую плату Asus P4P800 Gold. Настраивается Q-Fan в БИОСе: Power -> Hardware Monitor -> Q-Fan Control. Единственный изменяемый параметр (Fan Speed Ratio) представляет из себя дробное число от 11/16 до 15/16. Значение Disabled подразумевает, что технология отключена, но как выяснится далее, оно равнозначно 16/16. Проглядев сообщения в форуме, я уже был осведомлен, что при выборе параметров Q-Fan отличных от Disabled, в моменты малой загрузки процессора наблюдалось снижение оборотов вентилятора. Я поставил перед собой задачу убедиться, насколько все это верно, и по возможности выяснить каким образом этот эффект достигается.

Поскольку я уже знал, что установленный на борту материнки чип Winbond W83627THF поддерживает технологию Winbond SmartFAN, то сразу же сделал очевидное предположение, что здесь используется составная часть этой технологии – Thermal Cruise. Для того, чтобы окончательно доказать это предположение, требовалось всего лишь во время работы взглянуть на регистры чипа, отвечающие за управление этой технологией. Была запущена упомянутая выше программка WCruiser с параметром командной строки INFO. Мои предположения полностью подтвердились. Настройки 1-го и 3-го вентилятора стояли по умолчанию. Зато 2-й вентилятор был переведен в режим ThermalCruise со следующими параметрами:
Для режима 15/16:
Target VTIN2_Temperature = 55 |
Tolerance of Target Temperature = 3 |
Задан температурный коридор (55-3...55+3) = (52...58) градусов |
FAN2 PWM Stop Duty Cycle Register = 241 |
FAN2 PWM Start-Up Duty Cycle Register = 241 |
Стартовое и стоповое значение напряжений на вентиляторе совпадают, при этом полное отключение вентилятора запрещено. |
FAN2 PWM Stop Time Register = 60 |
Содержимое этого регистра значения не имеет, т.к. полное отключение вентилятора запрещено. |
FAN Step Down Time Register = 5 |
FAN Step Up Time Register = 3 |
Полное время "разгона" с величины 241 до 255 составит: (255-241)*0,1*3= 4,2 секунды |
Полное время "торможения" с величины 255 до 241 составит: (255-241)*0,1*5= 7 секунд |
Между собою настройки отличались лишь значениями регистров FAN PWM Stop Duty Cycle Register и FAN PWM Start-Up Duty Cycle Register:
Таблица 1:
настройки | значение регистров* | время "разгона" | время "торможения" |
15/16 | 241 | 4,2 | 7 |
14/16 | 225 | 9 | 15 |
13/16 | 209 | 13.8 | 23 |
12/16 | 193 | 18.6 | 31 |
11/16 | 177 | 23.4 | 39 |
* x/16 => PWM=256*x/16+1, x<16

Еще раз обращу Ваше внимание, на то, что в режим ThermalCruise переведен только вентилятор процессора. Настройки остальных вентиляторов не затронуты.
Рискну подвести итог этому небольшому исследованию.
Хваленая асусовская технология Q-Fan в том виде, в каком она реализована на P4P800 Gold, не больше чем жалкий обрезок фирменной технологии SmartFan (ThermalCruise) от Winbond. Чужая разработка максимально усечена и на нее прилеплен свой ярлык.
Подозреваю, что Q-Fan на материнских платах с чипами от ITE, поддерживающими технологию SmartGuardian, реализован подобным образом. В будущем постараюсь разобраться с этим вопросом.
Справедливости ради надо заметить, что:
- упрощение технологии сделано с целью повышения ее надежности;
- другие производители материнских плат не доросли и до этого :-(
Помечтаем ... ;-)
(Этот раздел был написан где-то в районе 1-го апреля, поэтому не относитесь к нему слишком серьезно :-) )
К сожалению, многие материнские платы не имеют на борту рассматриваемых в статье чипов I/O. Даже на тех из них, на которых стоят чипы, позволяющие регулировать напряжение на вентиляторах программно, зачастую эта возможность не реализована. Примером могут служить последние изделия от EPoX, Gygabyte, ECS, пр. Это обстоятельство заставляет их хозяев в какой-то мере сожалеть об их приобретении :-)
Возникает закономерный вопрос: неужели восстановить утраченную по вине производителя функциональность можно лишь поменяв материнку на более другую?! Может существуют реализации на базе рассмотренных (или подобных им) изделий Winbond в виде карт расширения???
Чип SuperIO это многофункциональное устройство. Возможность подключения к компьютеру переферии через LPT, FDC, KBC, GamePort, COM – это прежде всего его заслуга. Все давно уже свыклись с мыслью, что место микросхемы I/O --исключительно на материнской плате. Немногие застали те времена, когда эти изделия встречались исключительно на платах расширения ("мультипортовках"). Что сейчас мешает производителям, оглянувшись назад, реализовать плату расширения на базе какого-нибудь чипа SuperI/O? Если разъемы FDC, клавиатуры сейчас никому не нужны, то на дополнительные LPT, COM, Game порты наверняка существует спрос. Тем более, что последнее время функциональность данного рода микросхем расширилась за счет поддержки ими различных стандартов флэш карт, IrDA (FIR,CIR) и пр.
Согласитесь, что не лишними на подобной карте расширения смотрелись бы разъемы для подключения вентиляторов и термодатчиков! Плюсы выносных термодатчиков объяснять не надо (мобильность, простота калибровки), впрочем, как и минусы :-) Конечно, измерять температуру процессора такими термодатчиками согласится не каждый, особенно если на его материнской плате показания температуры снимаются непосредственно со встроенного в процессор диода. Но для таких осторожных всегда существует возможность софтового регулирования посредством программ наподобие SpeedFan, где можно вручную указать соответствие между датчиками и вентиляторами.
Тяжело осознавать, но скорее всего подобные "generation next" мультикарты так и остануться плодом моего воображения :-) Хотя, как знать, может найдутся умельцы, которые смогут реализовать эту идею на практике, не обязательно в виде карт расширения.
Заключение.
Надеюсь, статья даст прочевшим ее хоть какое-то представление о технологии Winbond SmartFan (Thermal Cruise), ее достоинствах и некоторых возможных трудностях и опасностях на пути ее задействования в домашнем компьютере.
Осталось еще много неразрешенных вопросов, которые можно было бы обсудить в конференции. Для начала неплохо было бы совместными усилиями:
- Составить список материнских плат (модель+чип SuperIO), полностью поддерживающих данную технологию Winbond, либо ее аналоги от других производителей (например, ITE);
- Пополнить черный список недоделанных материнок;
- Обсудить методику выбора параметров;
- Обсудить возможные баги технологии. Например: замечено, что иногда при понижении оборотов значение регистра PWM Duty вместо нуля принимало значение = 1,2,4. Баг не смертельный, но все же ...
- Отловить серьезные баги в WCruiser :-)
- В адрес apple_rom’а составить коллективную петицию с просьбой включить поддержку рассмотренной технологии в BiosPatcher (требуется всего лишь переслать по двум портам десяток-другой байтов) (шутка)
Планы на будущее: разобраться с технологией ITE SmartGuardian
Я считаю, что эта работа достойна награды, а вы можете поделиться своим мнением в специально созданной ветке конференции.
Лента материалов раздела
Соблюдение Правил конференции строго обязательно!
Флуд, флейм и оффтоп преследуются по всей строгости закона!
Комментарии, содержащие оскорбления, нецензурные выражения (в т.ч. замаскированный мат), экстремистские высказывания, рекламу и спам, удаляются независимо от содержимого, а к их авторам могут применяться меры вплоть до запрета написания комментариев и, в случае написания комментария через социальные сети, жалобы в администрацию данной сети.
Сейчас обсуждают