Исследование работы FanEQ на материнских платах A-Bit.

для раздела Блоги
[ver.001 pre alfa, 20-11-2004]



Начну издалека

У меня такая работа, что приходится в течение года сталкиваться с десятками моделей материнских плат. В биосах материнок некоторых производителей частенько встречаются названия пунктов, относящиеся к каким-либо фирменным технологиям: тот же Q-Fan, например. К сожалению, не всегда хватает времени, чтобы с ними разобраться получше.

Но бывает в какой-то момент, когда этот самый малоизученный пункт в 101-й раз попадается на глаза, любопытство пересиливает и приходится тратить на "разборки" с ним часть своего драгоценного личного времени

Так случилось и в этот раз с пунктом меню CPU FanEQ сетапа биоса материнской платы ABit VA10 (VIA KM400).

Из названия понятно, что это что-то связанное с вентилятором (fan) процессорного (cpu) кулера. Но что именно ? Возможно это аналог асусовского QFan'а ?

Поскольку я считал, что немного разбираюсь в данной теме, то решил из спортивного интереса не искать ответа на этот вопрос ни в интернете, ни в инструкции к материнке (мануалы я и так практически никогда не читаю ), а попытаться разобраться самостоятельно. Что из этого получилось -- читайте далее.


Для начала необходимо привести некоторые справочные данные по материнской плате ABit VA10 :

  • на ней установлена микросхема Winbond W83697HF, способная управлять оборотами вентилятора. Причем она это умеет делать не только по указке софта, но и автоматически (см. мою статью "Небольшой обзор технологии Winbond SmartFAN"). Неужели в славном полку фирм, рискнувших применить технологию SmartFAN на практике (ASUS, ECS Elitegroup, EPoX), прибыло ?!

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



    Настраивается FanEQ в сетапе биоса в разделе PC Health Status двумя пунктами:

  • CPU FanEQ Speed Control [xx% Speed]

    где xx принимает значения = 60 / 70 / 80 / 90 % или Disabled (по-умолчанию)

    В случае, если в этом пункте выбрано значение, отличное от [Disabled], выходит из "тени" и становится доступным для выбора следующий пункт:

  • - Active Temperature [yy C/zz F]

    где yy принимает значения = 40 / 45 / 50 / 55 (по-умолчанию) / 60 / 65 / 70 C



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

    Сразу заметил, что гул вентилятора процессорного кулера во время загрузки компьютера стал изменяться. Значит, что-то действительно происходит с его оборотами! Когда появился рабочий стол винды, то по уменьшившемуся шуму стало окончательно ясно, что обороты вентилятора упали. Запуск SpeedFAN'а подтвердил этот факт -- обороты вентиляторов были далеко не на уровне 100%.

    Но надолго ли понизились обороты ? Из того факта, что FanEQ настраивался в биосе двумя пунктами можно было предполочить, что обороты удерживаются на заданном уровне в xx %% (первый пункт) лишь до того момента, пока температура процессора не достигла заданного критического значения yy С градусов Цельсия (второй пункт).

    Попутно возник вопрос о том, каким образом происходит регулирование: аппаратным или софтварным ? Ответить на него можно просто запустив мою программку WCruiser (~30Kb) и посмотрев на параметры SmartFAN:

    CPU FanEQ Speed Control [60% Speed]
    - Active Temperature [40 C]


    -----------------------------------------------------------------------------
    
    WCruiser, version 0.005a
    Copyright (C) 2004 Vadim A. Karpov
    -----------------------------------------------------------------------------
    Recognised parameter: info
    VendorID = 5CA3h (Winbond)
    ChipID = 60h

    ==SmartFAN info:[ 1 ]==[ 2 ]==[ 3 ]
    Target 00h ( 0) 00h ( 0) FFh (255)
    Tolerance 00h ( 0) 00h ( 0) 0Fh ( 15)
    StartUp 01h ( 1) 01h ( 1) FFh (255)
    Stop 01h ( 1) 01h ( 1) FFh (255)
    StopTime 3Ch ( 60) 3Ch ( 60) FFh (255)
    FanMinDuty 01h ( 1) 01h ( 1) 01h ( 1)
    StepDownTime = 0Ah ( 10) StepUpTime=0Ah ( 10)
    SFanStatus 00h ( 0) 00h ( 0) 00h ( 0)
    FanCfgReg 00h ( 0) 00h ( 0) 03h ( 3) 0=manual;1=ThermalCruise;

    ==FAN parameters:----------------------------------- 2=FanSpeedCruise;3=locked
    FanPWM 7Fh (127) 7Fh (127) FFh (255) !!! 0= stop; 255=full speed
    FanLowLimit 99h (153) 00h ( 0) E2h (226)
    FanStatus 00h ( 0) 01h ( 1) 01h ( 1)
    FanCount 2Dh ( 45) FFh (255) FFh (255)
    FanDivisor ( 16) - ( 16) - ( 16)
    FanRPM 1875 - 330 - 330

    ==TEMPERATURE parameters:---------------------------
    Temp 23h ( 35) 27h ( 39) FFh (255) Current temperature
    TempOver 00h ( 0) 28h ( 40) FFh (255)
    TempHyst 6Ch (108 ) 23h ( 35) FFh (255)
    TempOffset 00h ( 0) 07h ( 7) 00h ( 0) Temp=Temp+TempOffset
    .

    Видно, что аппаратное регулирование не задействовано -- чип мониторинга не переведен в режим Thermal Cruise.

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

    Что-ж, круг поиска сузился -- остается лишь софтовый (программный) метод управления.

    Единственный способ реализации этого метода, который мне известен, без задействования программ сторонних производителей (типа SpeedFAN, MbM) -- через ACPI.

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

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

    Этому вопросу я уже уделял внимание в одной из своих предыдущих статеек: "Прививаем PowerNow! десктопным материнским платам". Но описанный в ней метод извлечения таблиц и образа биоса в данном случае не подойдет, т.к. скорее всего интересующие нас данные вносятся в таблицу на этапе POST загрузки компьютера. Поэтому уже "готовые" таблицы потребуется извлечь из памяти уже после загрузки операционной системы. Это можно сделать как из DOS (существуют такие утилиты), так и из Windows.

    Я предпочитаю предпочитаю второй способ и использую следующий алгоритм:

    • Загружаю WinXP.
    • Сохраняю (экспортирую) ветку реестра ...... HKEY_LOCAL_MACHINE\HARDWARE\ACPI. Для этих целей очень удобно использовать *.BAT/*.CMD файл следующего содержания:
      regedit /e "ACPItabs.reg" HKEY_LOCAL_MACHINE\HARDWARE\ACPI

      В упомянутую ветку реестра во время загрузки операционная система сохраняет ACPI таблицы. К Win9x это не относится, хотя возможно и существует способ и ее заставить вести себя подобным образом.
    • Перекодирую полученный reg-файл из уникода.
    • Из полученного файла вырезаю содержимое каждой таблицы в текстовом виде и перевожу в бинарный. Работа рутинная, так что вполне естественно на этом этапе воспользоваться специально-написанным конвертером-выдиральщиком
      Из полученных таблиц выбираю DSDT декомпилирую ее из AML-кода в ASL.
    • В полученном ASL-коде и пришлось выискивать следы интересующего алгоритма.


    Первым делом обращаем внимание, не реализован ли FanEQ через определение термальной зоны (\_TZ). Глупо, конечно, имея чип с возможностью аппаратной регулировки оборотов, вводить такую же или cхожую софтовую регулировку, которая по определению менее надежна. Но на что только производитель не идет ради унификации ! Ведь данная опция FanEQ, как уже упоминалось выше, встречается так же и на материнках с чипами без возможности аппаратной регулировки. Не переписывать же ради них все заново ;-)

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

    Рисунок 1. Так выглядит термальная зона в "Диспетчере устройств" ОС Windows XP.


    В ней предусмотрена работа вентилятора в двух режимах:

  • в режиме максимальных оборотов при достижении температурой максимальной отметки;
  • в режиме пониженных оборотов в случае, если температура пришла в норму.

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



    Примечание 1:

    В ходе разбирательств с этой материнской платой было замечено, что во время загрузки обороты изменяются несколько раз:
    * во время POST увеличиваются, затем падают;
    * во время загрузки винды увеличиваются (вероятно, когда драйвер ACPI начинает свою работу), а затем падают (когда выясняется, что температура в нормальных пределах);

    Возникло, а затем и подтвердилось предположение, что биос непосредственно перед загрузкой операционной системы зачем-то понижает обороты.

    CPU FanEQ Speed Control [60% Speed]
    - Active Temperature [40 C]


    -----------------------------------------------------------------------------
    
    WCruiser, version 0.005a
    Copyright (C) 2004 Vadim A. Karpov
    -----------------------------------------------------------------------------
    Recognised parameter: info
    VendorID = 5CA3h (Winbond)
    ChipID = 60h

    ==SmartFAN info:[ 1 ]==[ 2 ]==[ 3 ]
    Target 00h ( 0) 00h ( 0) FFh (255)
    Tolerance 00h ( 0) 00h ( 0) 0Fh ( 15)
    StartUp 01h ( 1) 01h ( 1) FFh (255)
    Stop 01h ( 1) 01h ( 1) FFh (255)
    StopTime 3Ch ( 60) 3Ch ( 60) FFh (255)
    FanMinDuty 01h ( 1) 01h ( 1) 01h ( 1)
    StepDownTime = 0Ah ( 10) StepUpTime=0Ah ( 10)
    SFanStatus 00h ( 0) 00h ( 0) 00h ( 0)
    FanCfgReg 00h ( 0) 00h ( 0) 03h ( 3) 0=manual;1=ThermalCruise;

    ==FAN parameters:----------------------------------- 2=FanSpeedCruise;3=locked
    FanPWM 7Fh (127) FFh (255) FFh (255) !!! 0= stop; 255=full speed
    FanLowLimit 99h (153) 00h ( 0) A2h (162)
    FanStatus 00h ( 0) 01h ( 1) 01h ( 1)
    FanCount 2Ch ( 44) FFh (255) FFh (255)
    FanDivisor ( 16) - ( 16) - ( 16)
    FanRPM 1917 - 330 - 330

    ==TEMPERATURE parameters:---------------------------
    Temp 23h ( 35) 27h ( 39) FFh (255) Current temperature
    TempOver 00h ( 0) 46h ( 70) FFh (255)
    TempHyst 68h (104) 41h ( 65) FFh (255)
    TempOffset 00h ( 0) 07h ( 7) 00h ( 0) Temp=Temp+TempOffset


    Этот "скриншот" сделан из-под DOS.

    Видно, что обороты первого вентилятора выставляются в соответствии с установками в сетапе биоса пункта CPU FanEQ Speed. Какие цели этим преследуются -- загадка.

    Примечание 2:

    У исследуемой материнской платы на практике обнаружилась еще одна странность. Обычно на материнских платах с чипами WINBOND на борту при грамотной разработке TEMPIN2 соответствует CPUTEMP, а FAN2 соответствует CPUFAN. В данной же материнке оказалось, что CPUTEMP, как и положено, соответствует TEMPIN2, но CPUFAN соответствует FAN1 !

    Кстати, данное остоятельство не позволило бы в любом случае задействовать на этой материнской плате технологию WInbond SmartFAN, т.к. необходимым условием ее соблюдения является совпадение номера вентиляторного разъема и номера температурного датчика (TMPIN1->FAN1, TMPIN2->FAN2).

    Такой несуразности я от ABit я, честно говоря, не ожидал !

    Но будем считать все упомянутые странности особенностью лишь данной модели материнской платы. Она принадлежит к бюджетному сектору и возможно по этой причине инженеры компании особо не заморачивались с ее разработкой.



    Практическое исследование я продолжил, выбирая в сетапе в пунктах, относящихся к FanEQ разные значения, и наблюдая за изменениями в регистрах чипа мониторинга с помощью WCruiser.

  • Было замечено, что выставление разных параметров в пункте CPU FanEQ Speed Control сетапа биоса влияет только на регистры FanPWM чипа мониторинга, задающих уровень напряжения, подаваемого на вентиляторы. Точнее, под DOS изменяется регистр FanPWM1, а под Windows еще и FanPWM2.

    На основе полученных данных была составлена следующая таблица:

    Таблица 1.
    FanEQ,
    %%
    FanPWM FanPWM,
    %%
    Voltage Voltage,
    %%
    RPM RPM,
    %%
    60% 127 50% 5.61V 49.9% 1917 rpm 47.7%
    70% 152 60% 6.71V 59.6% 2343 rpm 58.3%
    80% 185 73% 8.16V 72.5% 2909 rpm 72.4%
    90% 211 83% 9.30V 82.7% 3375 rpm 84.0%
    disable 255 100% 11.25V 100.0% 4017 rpm 100.0%

    По таблице видно, что проценты, задаваемые в пункте FanEQ, не соответствуют процентному соотношению PWM (=FanPWM/255*100%, третий столбец), которое использует, например, SpeedFAN. Мое предположение, что, проценты FanEQ считаются от максимального напряжения или оборотов вентилятора, так же не подтвердилось. Будем считать это очередной странностью материнки.

    Рисунок 2: Поразительная, практически линейная зависимость оборотов вентилятора. Впервые сталкиваюсь с такой правильной формой графика.



  • Изменения параметра - Active Temperature никак не сказались на регистрах чипа мониторинга под DOS. Под Windows изменения затронули 2 регистра: TempOver и TempHyster. Напомню, что значение этих двух регистров задает драйвер ACPI.

    В первый из них (TempOver) попадали значения температуры, задаваемые в сетапе биоса в пункте Active Temperature.
    Во второй регистр (TempHyster) выставлялись значения на 5 градусов меньше, чем в первый регистр.

    Почему использовались именно эти регистры ? Дело тут скорее всего в том, что чип мониторинга можно настроить таким образом, чтобы он вырабатывал прерывание SMI при достижени температурой порога, заданного в любом из этих регистров. Это позволяет отказаться от переодического считывания значений регистра, содержащего значения температуры, что позволяет разгрузить процессор и практически мгновенно реагировать на пересечение температурой заданного порога.

    Таким образом, при достижении температурой значения, заданного в регистре TempOver, вырабатывается прерывание, на которое драйвер ACPI реагирует увеличением оборотов вентилятора (на самом деле, обоих вентиляторов) до максимальных.

    Когда температура падает и достигает значения, заданного в регистре TempHyst, опять же вырабатывается прерывание, на которое драйвер реагирует сбросом оборотов до первоначально заданного уровня.



    Итоговый алгоритм

    * По-умолчанию функция FanEQ не активизирована. Для того, чтобы ее включить, необходимо в сетапе биоса в разделе PC Health Status в пункте CPU FanEQ Speed Control установить желаемую скорость вращения вентиляторов (см. Таблицу 1) и в пункте Active Temperature температуру, при достижении которой венилятор будет переведен на максимальные обороты. Далее сохраняете настройки и перезагружаетесь. На этом подготовительный этап заканчивается.

    * При включении компьютера обороты вентилятора максимальны.
    * Во время этапа POST биос переводит обороты венилятора на выбранный в пункте CPU FanEQ Speed Control уровень. Эта скорость вращения вентиляторов будет удерживаться и при входе в сетап биоса, и до момента передачи управления операционной системе.
    * Далее, если загружается не ACPI совместимая операционная система (DOS, Win95), то обороты вентилятора остаются постоянными и автоматически в зависимости от температуры не регулируются (ибо некому их регулировать ).
    * Если биос передает управление ACPI совместимой операционке, то она впоследствии сама сможет управлять оборотами вентилятора в зависимости от температуры процессора. Рассмотрим более подробно процесс на примере WinXP:
    * В момент времени, когда появляется заставка "Windows XP Home Edition" на черном фоне, происходит инициализация драйвера ACPI. Обороты вентилятора опять переводятся на максимальные.
    * В момент времени, когда появляется заставка "Приветствие" на голубом фоне, начинает работать термальная зона:
    -- в регистры FanPWM1 & FanPWM2 заносятся значения, соответствующие пункту CPU FanEQ Speed Control (см. по Таблице 1),
    -- в регистр TempOver заносится значение, соответствующее температуре в пункте Active Temperature.
    -- в регистр TempHyst заносится значение на 5 градусов меньшее, чем в регистре TempOver.

    * Далее в зависимости от текущей температуры, термальная зона выбирает обороты вентилятора.

    *Если температура превысила значение, заданное в регистре TempOver, вырабатывается прерывание и драйвер ACPI увеличивает обороты до максимальных.

    *Если температура упала ниже значения, записанного в TempHyst=TempOver-5, то опять вырабатывается прерывание и драйвер устанавливает обороты согласно пункту CPU FanEQ Speed Control биоса.

    И так далее: три последних пункта по циклу...



    Выводы:

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

    Все очень просто. Хоть это и не хай-энд материнская плата, но все же на ABit VA10 реализована функция терморегулирования, которую несложно реализовать для любой другой материнской платы, умеющей замерять температуру процессора и регулировать обороты охлаждающего его вентилятора (ABit NF7, например ). Вполне возможно, что одну из своих будущих статей я посвящу именно этому вопросу.



    Примечание 3:

    Рассматриваемый в статье вариант реализации FanEQ ни в коем случае нельзя ассоциировать с материнскими платами фирмы ABit, в которых применена так называемая технология uGuru (мю-Гуру) -- в них реализовано полностью аппаратное управление оборотами вентилятора в зависимости от температуры.

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

    Надо будет также не забыть глянуть, что пишут по сабжевой теме в интернете и в User Manual'е




    Дополнение от 21-11-2004:

    Бывают же в жизни совпадения: утром залил статью на персоналку, а в обед принесли на сборку материнку ABit IC7-G (rev:1.1, bios v.2.26), в которой присутствует сабжевая технология. Правда, ее реализация несколько отличается от рассмотренной ранее:

    1. В биосе параметры FanEQ в IC7-G настраиваются теми же пунктами, что и в VA10:



    Первый пункт (CPU FanEQ Control Speed) предоставляет те же возможности: выбор из четырех скоростей, равных 60/70/80/90% от максимальной. Самое приятное, что выбранный здесь уровень скорости с точностью до процента совпадает потом с процентами, отображаемыми в SpeedFAN'е. Поэтому уже не приходится гадать, к чему собственно эти проценты относятся. ;)

    Зато второй (- Active Temperature) реализован немного иначе. При нажатии <Enter> на этом пункте появляется окошко, в котором предлагают ввести любое значение пороговой температуры от 30 до 90 градусов Цельсия.

    2. Замечено такое же поведение в процессе загрузки, как и на VA10, т.е понижение оборотов при прохождении POST BIOS, повышение при загрузке драйвера ACPI и затем снова понижение при работе термальной зоны.

    3. Обнаружено существенное отличие от VA10: биос не изменяет значение регистров TempOver и TempHyst. Возможно, драйвер ACPI не ориентируется на прерывания, а просто сам периодически справляется у чипа мониторинга об интересующих его температурах (термальную зону я еще не изучал, так что точно сказать не могу). Конечно, такой способ более ресурсозатратный и менее надежен.

    Кое-какая дополнительная информация по материнской плате:

    * микросхема ввода-вывода Winbond W83627HF -- умеет управлять вентиляторами, но не умеет делать это самостоятельно в автоматическом режиме в зависимости от температуры.

    * обозначение вентиляторов следующее:

    FAN1 -> CPU FAN
    FAN2 -> NB FAN
    FAN3 -> SYS FAN

    При этом CPUTEMP -> TMPIN2 -- опять прослеживается опасная привычка (тенденция?) разносить температуру процессора и регулировку его вентилятора в разные пары. Потом эта дурная привычка инженеров выходит боком конечным пользователям и не позволяет им применять аппаратные технологии терморегулирования на материнках, чипы мониторинга которых способны на это. Так, например, и произошло с платой VA10

    * удивила очень большая поправка (TempOffset=19C) на температуру процессора:

    FanCount        3Ah (58 )  14h ( 20)  23h ( 35)
    
    FanDivisor ( 16) - ( 16) - ( 16)
    FanRPM 1454 - 4218 - 2410
    ==TEMPERATURE parameters:-----------------------
    Temp 1Ch (28 ) 38h ( 56) 21h ( 33)
    TempOver A4h (164) 4Bh ( 75) 4Bh ( 75)
    TempHyst 2Dh ( 45) 46h ( 70) 46h ( 70)
    TempOffset 00h ( 0) 13h ( 19) 00h ( 0)


    * точно уже не помню, но вроде бы можно изменять обороты вентилятора на северном мосту. Регулируются ли его обороты с помощью FanEQ -- на практике выяснить не успел. Скорее всего Да, и это будет видно по строению термальной зоны.

    К сожалению, толком потестировать эту материнку (IC7-G) не удалось -- время, отведенное на сборку, было ограниченным.



    Кстати, полистал мануал к VA10. В нем описано, что FanEQ служит для регулирования оборотов вентилятора в зависимости от температуры, но нигде не говорится, что эта технология работает только под ACPI-совместимой операционной системой и что в противном случае происходит банальное понижение биосом оборотов вентилятора. Не говорится об этом и в обзорах материнских плат с поддержкой этой технологии. Например, на 3DNews в обзоре IC7-G просто приведен перевод (близко к тексту) из мануала к материнке.

    Хотя, сегодня это, наверное, не так уж и важно -- на подавляющем большинстве компьютеров стоят именно ACPI-совместимые ОС.



    Нашел таки описание FanEQ на официальном сайте ABit. Похоже, это описание больше относится к платам c uGuru на борту. Хотя скриншот там приведен как раз для FanEQ на основе термальной зоны.

    Для VA10 некоторые пункты из этого описания неверны. Безобразие !



    Дополнение от 30-11-2004:

    Замечено применение подобной технологии на A-Bit IS7-E2 i865PE(Winbond W83627HF).
    Реализация очень похожа на IC7-G. Завтра уточню подробности.

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

    Дополнение от 01-12-2004:

    Возвращаясь к A-Bit IS7-E2. Потестировал сегодня эту материнку. Реализация FanEQ представляет нечто среднее между FanEQ в IC7-G и VA10.

    1. Настраивается FanEQ в биос точно так же, как и на IC7-G.
    2. Выбираемые проценты точно соответствуют процентному уровню в SpeedFan (как и у IC7-G)
    3. Регистры TempHyst / TempOver настраиваются точно так же, как и у VA10.
    Как и у предыдущих материнок, температура измеряется по TMPIN2, а обороты регулируются посредством FANOUT1. Остальные вентиляторные разъемы -- нерегулируемые.

    Вадим Карпов


    Линки по теме:

    Обустраиваем 'Термальную зону' (_TZ)
    Небольшой обзор технологии Winbond SmartFAN
    Прививаем PowerNow! десктопным материнским платам

    ---
    Обсудить эту и другие статьи/записи с моей персональной страницы можно в соответствующей ветке конференции.
    Telegram-канал @overclockers_news - это удобный способ следить за новыми материалами на сайте. С картинками, расширенными описаниями и без рекламы.
  • Возможно вас заинтересует

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

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