Некоторые мысли и замечания относительно технологии Cool'n'Quiet (и PowerNow!)

31 октября 2004, воскресенье 06:04
для раздела Блоги
Начнем с того, что звучный термин Cool'n'Quiet появился вместе с платформой AMD64.

Технология Cool'n'Quiet является [очень] близкой родственницей другой технологии под названием PowerNow!, которая широко применяется в ноутбуках с мобильными процессорами AMD. Цели, суть и способы реализации этих двух технологий идентичны. Разница только в том, что их применяют (а точнее, упоминают) для процессоров разных поколений (K7 и K8 ) и сегментов рынка. Так что многое, что будет далее сказано про реализацию Cool'n'Quiet можно будет смело отнести и к PowerNow!.

Суть Cool'n'Quiet заключается в том, что в момент малой загрузки процессора операционная система переводит его в более экономичное с точки зрения затрат энергии состояние. Добивается она этого путем понижения частоты (точнее, коэффициента умножения) процессора с последующим понижением напряжения его питания. После того, как процессор приторможен операционной системой и начинает потреблять (а следовательно и рассеивать) меньше энергии (это, кстати, первоочередная цель для PowerNow!), его температура снижается. Именно охлаждением процессора объясняется присутствие в названии технологии слова Cool'.

Далее, поскольку температура процессора понизилась, то обороты охлаждающего его венилятора можно уменьшить, понизив тем самым шум системы охлаждения. Это как раз вторая составляющая названия технологии: 'Quiet.

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

Итак, уже можно выделить нобходимые условия для поддержки этих двух технологий:

0. Очевидное условие: способность процессора по запросу софта менять свою частоту и умение информировать внешние схемы питания о необходимом ему напряжении. Этой способностью обладают большинство K8 и мобильные (в т.ч. "замобиленные") K7.

1. Способность процессора изменить "на лету" множитель требует поддержки со стороны чипсета материнской платы. Если в чипсеты для K8 подобная поддержка [вроде бы] закладывается изначально, то в семье чипсетов для K7, как оказалось, не без урода. Им на сегодняшний день является всеми любимый nForce(2). На некоторых материнках на базе остальных чипсетов под K7 иногда требуется включать подобную поддержку "ручками", изменяя некоторые PCI регистры (FID Command Enable).

2. Способность процессора изменить "на лету" напряжение зависит опять же от материнской платы. На этот раз, требуется правильная разводка на плате так называемых SoftVID ног, через которые процессор, выполняя указания свыше (от софта) информирует (запрашивает) подсистему питания материнки о требуемом ему напряжении.

К сожалению, практически у всех десктопных плат под K7 и у многих под K8 второе условие не выполняется А ведь без понижения напряжения существенного снижения энергопотребления не происходит. Даже при понижении частоты: ведь уменьшение множителя это не способ понизить энергопотребление процессора, а в первую очередь необходимое условие для безопасного снижения напряжения.

3. Поскольку сам процессор не способен определить степень своей загрузки, то эта задача возлагается на софт. В зависимости от загрузки процессора, этот софт принимает решение о переходе на тот или иной энергетический уровень путем смены напряжения и/или множителя. Этим управляющим софтом может быть как драйвер операционной системы, так и программы сторонних производителей: от самой AMD, CrystalCPUid от CrystalMarks, RM Clock utility (ex AMD64 clock utility) от RightMarks.

4. В случае, если в п.3 используется драйвер процессора от мелкрософта или специализированный софт от AMD, то возникает еще одно требование. На этот раз к БИОСу материнской платы. От него требуется распознать процессор и подготовить в оперативной памяти для драйвера операционной системы необходимые данные (структуры) о допустимых энергетических состояниях процессора (P-states), которые представляют из себя пары "частота(множитель)--напряжение". Если БИОС не расчитан на подобную поддержку, то ему можно помочь в этом -- подробности в моей статье Прививаем PowerNow! десктопным материнским платам.

Если же используется не драйвер, а сторонний софт (CrystalCPUid, например), то такие пары "частота-напряжение" задаются в самой программе на основе опытных данных, полученых методом подбора. С одной стороны, чтобы их получить, требуются немалые затраты времени. Но с другой стороны, они более точно будут отражать характеристики используемого экземпляра процессора.

Собственно, эти четыре пункта и составляют суть Cool'. Поговорим теперь о 'Quiet.

5. Как и смена множителя/напряжения процессора, управление оборотами вентилятора в зависимости от температуры процессора также может осуществляться разными способами:

  • аппаратными: задействуются технологии, реализованные в чипах хардварного мониторинга (aka HM, SuperIO, SIO), расположенных на материнской плате. Пример:
    * Winbond SmartFAN (W83627THF,W8363(4/9)7HF,...)
    * ITE SmartGuardian (IT8712, IT8705,...)
    * ABit uGuru (Winbond W83L950D)
    * Asus Q-Fan (ASB100(A))

  • софтовыми: с помощью программного обеспечения. Например, драйвера ACPI (+ThermalZone) операционной системы. Или всем известных SpeedFAN'а или MbM'а. В этом случае от материнской платы также требуется наличие микросхем, умеющих управлять оборотами вентилятора. Для подобных целей, например, широко применяется чип W83627HF от Winbond.
Тут главное не забывать, что само по себе наличие той или иной микросхемы, способной управлять оборотами вентилятора, является необходимым, но не достаточным условием для осуществления регулирования. Очень важно, чтобы производитель материнской платы позаботился о правильной "разводке"/"обвязке" этой микросхемы. К сожалению, многие производители предпочитают "экономить" даже на такой мелочи, не смотря на то, что для выполнения этого условия требуется всего лишь несколько дополнительных деталек с мизерной общей стоимостью

Здесь можно так же упомянуть о полностью аппаратном способе регулирования оборотов вентилятора с помощью электронной системы, элементы которой никак не привязаны к материнской плате: термодатчик, вентилятор и некое аналоговое устройство, изменяющее обороты вентилятора в зависимости от температуры термодатчика. Как минимум одну из таких схем вы можете найти на персональных страницах. Лично я отношусь к подобному способу регулирования оборотов с некоторым недоверием. Перед его использованием обязательно убедитесь в том, что в биосе матплаты включена защита от перегрева процессора: задана критическая температура и троттлинг

Вот пожалуй и все основные моменты, на которых хотелось бы обратить внимание. Надеюсь, мне удалось показать, что Cool'n'Quit -- это довольно сложная, комплексная технология, которую нельзя так просто включить простым пунктиком в БИОСе и которую на практике, если выполнены все условия, можно реализовать самостоятельно кучей разных способов.

Искренне надеюсь , что после опублкования этой статейки криков "А-а-а-а-а! У меня Q'n'Q не пашет !!!" станет гораздо меньше, а причины того, что именно "не пашет", будут выявляться оперативнее



Теперь немного о типичных проблемах, которые могут возникнуть, и способах их разрешения:

Проблема 1:

Множитель и напряжение не изменяются автоматически из под винды.

Возможная причина:

а) не установлен соответствующий драйвер процессора;
б) если драйвер установлен, то возможно не выбрана правильная схема энергосбережения ("Портативная" или "Диспетчер энергосбережения");

Проблема 2:

Не изменяется фактическое напряжение на процессоре: ни автоматически (драйвером процессора), ни вручную. Т.е. с помощью утилит, таких как CrystalCPUID, CPUMSR, RM Clock Utility, оно вроде меняется, а в SpeedFAN, MBM видно, что оно на самом деле осталось без изменений.

Возможная причина:

На материнской плате не разведены SoftVID ноги прцессора (см. выше необходимые условия пункт №2). Это вполне "нормальное" состояние для десктопных материнских плат под K7.

Недавно в форуме появилась информация о том, что после прошивки нового биоса материнские платы EPoX 8KDA3J/I, не умевшие менять напругу процессора "на лету", вдруг обрели подобную способность! Возможно, новый биос каким то образом умеет управлять мультиплексором, соединяющем VID & SoftVID ноги процессора с конвертером питания. Сам проверить пока не могу -- нет у меня в наличии этих материнок.

В любом случае можно дать следующий очевидный совет: перед экспериментами с старайтесь прошить самый свежий биос.

На некоторых материнских платах при ручной (не AUTO) установке напряжения на процессоре в Setup'е БИОСа, материнка теряет способность изменять напряжение процессора "на лету". Здесь наверняка [опять же] сказываются особенности реализации того самого мультиплексора.


Проблема 3:

В простое, когда уменьшается частота и напруга проца, не падают обороты вентилятора.

Возможная причина:

а) (самая маловероятная) на материнской плате нет чипа, умеющего регулировать обороты вентилятора. (смиритесь с этим)

б) (самая страшная) чип есть, но производитель поленился его правильно "развести". (смиритесь с этим, шлите проклятья в адрес производителя и никогда больше не покупайте его плат; можно доработать материнку, как это сделали здесь)

в) вполне вероятно, что в биосе просто-напросто не включена (или не настроена) соответствующая опция, позволяющая автоматически регулировать обороты вентилятора в зависимости от температуры процессора. На платах ASUS это всем известный Q-Fan, на платах остальных производителей (EliteGroup, EPoX) в названии этой опции присутствует фраза SmartFAN. Самое смешное, что эта опция называется так же даже на платах от Gigabyte, использующих технологию ITE SmartGuardian.

г) если пункты а), б), в) оказались неверны, то ситуацию можно исправить с помощью утилит (SpeedFAN, MbM) или добавить 'термальную зону' в таблицы ACPI.

Остальные проблемы (например, с планками памяти не в первом к процессору слоте), их возможные причины и способы решения добавлю попозже, по мере уяснения этих вопросов.



[дополнение от 07 декабря 2004]

Дополнение 1:

В ходе экспериментов с C&Q выяснилась еще одна интересная особенность: если вручную изменить коэффициент умножения процессора с помощью сторонних утилит (например, CrystalCPUid) то драйвер процессора от AMD для Windows XP перестает регулировать частоту в зависимости от нагрузки на процессор.

Решение "проблемы" довольно простое. Необходимо:
1) либо просто перезагрузить компьютер
2) либо с помощью тех же утилит вручную выставить один из коэффициентов умножения (КУ), на которые драйвер переводил процессор во время работы C&Q; обычно это либо максимальный, либо минимальный (x4/x5) КУ;

Дополнение 2:

Замечено одно любопытное отличие PNow! от C&Q.

Для мобильных процессоров K7 с PNow! биосы мобильных материнских плат создают несколько возможных состояний P-States (Perfomance States). Обычно их больше двух.

Для K8 биосы создают лишь два P-состояния: минимальное (обычно с коэффициентом умножения x4 или x5) и максимальное (с максимальным КУ для установленной модели процессора)

Чем обусловлено такое различие, точно сказать не берусь. Возможно, большее количество P-states позволяет операционной системе лучше управлять энергопотреблением процессора и системы в целом.

В любом случае владельцы K8, которых тяготит присутствие лишь двух состояний, без особого труда смогут расширить их ассортимент, как это описано в одной из моих статей.



Это первоначальный вариант статьи. В скором будущем добавлю побольше скриншотов (для красоты и лучшего восприятия материала) и ссылочек.

Оценитe материал

Возможно вас заинтересует

Популярные новости

Сейчас обсуждают