• Аппаратный мониторинг материнских плат. Программно-аппаратная реализация. Часть 2.

Редакция 13.01.2022

Устройство аппаратного монитора

Как было сказано в первой части статьи, «мультиконтроллер» содержит один из наиболее важных компонентов – блок аппаратного монитора, иначе – контроллер окружения, на который возлагаются функции непрерывного мониторинга температур и напряжений, а также контроль и управление оборотами вентиляторов. Для того, чтобы разобраться, как реализован принцип работы EC-контроллера, ознакомимся со схемой, изображённой на Рис. 1.

ITE IT8686E ADC & MUX
Рис. 1. Принципиальная схема EC-контроллера

Здесь ЕС-контроллер представлен в виде совмещённого устройства, состоящего из мультиплексора и АЦП – аналого-цифрового преобразователя. Для тех, кто не знаком с курсом цифровой схемотехники, поясню, что мультиплексор представляет собой, по сути, коммутатор, у которого есть несколько сигнальных входов и один выход. Задача мультиплексора состоит в передаче сигнала, поступившего на один из его входов и последующей передаче на выход. На схеме (Рис. 1) видно, что у мультиплексора имеется 3 входа (TMPIN1–TMPIN3) для температур и 8 входов (VIN0–VIN7) для напряжений, а также вход VBAT. Выход мультиплексора подключен к АЦП для преобразования выходного сигнала в цифровое представление, т.е. в числовое значение, которое в дальнейшем можно считывать программным способом. Таким образом, через мультиплексор осуществляется непрерывный опрос всех входов на наличие уровня поступающих сигналов с последующей их передачей на АЦП для оцифровки.

Разрядность – одна из основных характеристик АЦП. У всех «мультиконтроллеров» и микросхем аппаратного мониторинга фирмы ITE АЦП являются 8-разрядными. Это означает, что уровень сигнала может быть преобразован в числовое значение размерностью 1 байт. Такая размерность может включать одно из 256 возможных дискретных значений – от 0 до 255. Для температурных показаний эта размерность достаточна для хранения значений в диапазоне от -55°C до 125°C. Что касается напряжений, то весь современный модельный ряд ITE, в т.ч. IT8686E и IT8792E, может напрямую подключаться к источнику для замера входных напряжений в допустимом диапазоне от 0 до 3,072 В. Если входное напряжение находится за пределами данного диапазона, тогда в цепь включают делитель сигнала, представляющий собой два резистора Ra и Rb (см. Рис. 1). Это справедливо для положительных напряжений. Отрицательные напряжения рассматривать не будем, т.к. в современных системах они утратили свою актуальность и больше не отслеживаются. Таким образом, при наличии делителя напряжения формула расчёта уровня напряжения, поступающего на вход VIN с номером X мультиплексора представляется в виде:

V = VinX * (Ra + Rb) / Rb
Формула 1

Данная формула приведена неспроста и нам она очень скоро понадобится.

Другой важной характеристикой АЦП аппаратного монитора является разрешение. В англоязычной терминологии эта характеристика обозначается как LSB – Least significant bit. Формально LSB – это наименьшее входное напряжение, которое способен измерить АЦП. Для таких устаревших моделей «мультиконтроллеров», как IT8705F и IT8712F, разрешение АЦП равно 0,016 В. Для современных моделей, типа IT8686E или IT8688E оно равно 0,012 В. Эту характеристику также нельзя игнорировать, потому что мы будем обращаться к ней постоянно. Ниже приведена сводная Таблица 1 для некоторых моделей EC-контроллеров, содержащая данную характеристику.

Модель Разрешение, В
IT8705, IT8712 0,016
IT8620, IT8628, IT8686, IT8688, IT8689, IT8721, IT8728, IT8771, IT8772 0,012
IT8790, IT8791, IT8792, IT8795 0,011
IT8665 0,0109
Таблица 1. Разрешение АЦП EC-контроллеров

Регистры

Любое программируемое электронно-цифровое устройство обладает регистрами. Они представляют собой энергозависимые ячейки памяти с определёнными доступом – RO (Read-only – только чтение), RW (Read-Write – чтение и запись), WR (Write-only – только запись) и другие флаги. Энергозависимые означает, что при подаче питания на устройство его регистры находятся в обнулённом либо состоянии «по умолчанию». Через регистры происходит конфигурирование устройства – определение его режима работы, параметров и различных настроек. EC-контроллер также имеет свой набор регистров, но в контексте данной темы, мы будем обращаться только к имеющим флаг доступа RO, содержащим числовые значения показаний температур и напряжений. Важно заметить, что все регистры ЕС-контроллера являются 8-разрядными, т.е. могут хранить целочисленные значения от 0 до 255.

Традиционно ITE не меняет номера адресов регистров для хранения значений температур и напряжений. Они одинаковы для всех моделей «мультиконтроллеров». Например, в регистры 29h, 2Ah и 2Bh АЦП сохраняет показания температуры, уровни которых поступили на входы мультиплексора TMPIN1, TMPIN2 и TMPIN3 (Рис. 1) соответственно. Эти адреса определены ещё со времён устаревшей модели IT8705F и аналогично задействованы в новых моделях ITE. Сигналы, приходящие на входы VIN0–VIN7 мультиплексора сохраняются после оцифровки АЦП в регистры 20h–27h соответственно. Значение напряжения на элементе питания VBAT (3-вольтовая батарея) сохраняется в регистр 28h. Вся эта информация находится в технической документации на изделие и при желании вы можете подробнее ознакомиться с ней самостоятельно. К сожалению, ITE рассматривает свою техническую документацию, как конфиденциальную. Поэтому готовьтесь к тому, что найти в открытом доступе документацию для чего-то более нового, чем IT8728E, будет затруднительно. Ниже приведена сводная Таблица 2 для регистров, предназначенных для хранения температурных показаний и напряжений.

Адрес регистра, HEX Вход мультиплексора
20h VIN0 / напряжение
21h VIN1 / напряжение
22h VIN2 / напряжение
23h VIN3 / напряжение
24h VIN4 / напряжение
25h VIN5 / напряжение
26h VIN6 / напряжение
27h VBAT / напряжение
28h VIN8 / напряжение
29h TMPIN1 / температура
2Ah TMPIN2 / температура
2Bh TMPIN3 / температура
2Ch TMPIN4 / температура
2Dh TMPIN5 / температура
2Eh TMPIN6 / температура
2Fh TMPIN7 / температура (возможно)
Таблица 2. Регистры EC-контроллера

Порты ввода-вывода

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

Фундаментальная архитектура персонального компьютера предусматривает наличие портов ввода-вывода, через которые происходит взаимодействие центрального процессора с различными устройствами. Однако такой способ организации доступа к регистрам аппаратных средств сегодня считается устаревшим. AMD, например, рекомендует обращаться к адресному пространству устройства, отраженному в оперативную память – Memory-mapped I/O Space. Все порты имееют уникальный номер и подразделяются на адресные и порты данных. Для поиска «мультиконтроллера» фирмы ITE программное обеспечение сначала использует пару из адресного и порта данных – 2Eh и 2Fh соответственно, а затем – пару 4Eh/4Fh. В первом случае всегда обнаруживается основной «мультиконтроллер», во втором – IT8792E и аналогичные ей микросхемы.

Практическая чаcть

Для считывания регистров EC-контроллера, перечисленных в Таблице 2, воспользуемся Thaiphoon Burner. Программный мониторинг был реализован в версии 16.2.0.0 в начале прошлого года, но ограничен он поддержкой только контроллеров фирмы ITE.

После запуска приложения в главном меню Tools выбираем команду Hadware Monitoring либо нажимаем F4 на клавиатуре. Программа начнёт поиск основного и вторичного контроллеров через две пары портов ввода-вывода – 2Eh/2Fh и 4Eh/4Fh. Если ваша материнская плата снабжена «мультиконтроллером» фирмы ITE и дополнительной микросхемой аппартного монитора, типа IT8792E, то первоначально программа отобразит для вас список температурных линий и линий напряжения, как на скриншоте ниже (Рис. 2).

Thaiphoon Burner HW Monitor
Рис. 2. Мониторинг температур и напряжений в Thaiphoon Burner

Как видим, пока достаточно затруднительно определить, какое именно напряжение отслеживается, например, по линии VIN6 или температура, например, TEMP2. Чтобы изменить название каждой линии в программе пользователю необходимо знать, какие температуры и напряжения отображаются в BIOS Setup Utility. Как было сказано выше, все напряжения меньше 3,072 В не требуют делителя, который, рассчитываемого по Формуле 1. Поэтому их легко определить, сопоставив с показаниями в BIOS. Эта рекомендация, кстати, также актуальна и для температур. Что касается напряжений +3,3 В, +5 В и +12 В, то для их вычисления нам потребуется значение делителя. В большинстве случаев для напряжения +12 В делитель равен 6, а для +3,3 В и +5 В он определяется согласно схемотехнической документации или, при её отсутствии, подбором.

Нажав кнопку Advanced, программа останавливает считывание регистров EC-контроллера и предоставляет пользователю возможность изменять название линий, адрес регистров (столбец Reg#), указывать нужное разрешение АЦП (столбец DAC formula), добавлять делитель напряжения (столбец DAC formula), задавать адресный порт (столбец I/O Port). Рядом с кнопкой Advanced располагается список профилей для некоторых материнских плат Gigabyte. Профили, содержащие в своём названии Generic for, являются типовыми, т.е. общими для всех материнских плат, основанных на конкретном чипсете. Untested-профили созданы по схемотехнической документации. В режиме Advanced пролистайте список профилей, чтобы иметь представление о том, какие делители определены для перечисленной выше тройки напряжений. На примере материнской платы Gigabyte GA-AX370 Gaming K5 подробно рассмотрим создание профиля в Thaiphoon Burner, обратившись к её схемотехнической документации.

Из первой части данной статьи нам известно, что линии SYS_TEMP, PM_TEMP и CPU_TEMP, «мультиконтроллера» подключены к входам EC-контроллера TMPIN1, TMPIN2 и TMPIN3 соответственно. Согласно Таблицы 2 значения температур считываются из регистров 29h, 2Ah, и 2Bh соответственно. В Thaiphoon Burner в режиме Advanced изменяем строку TEMP0 на Температура в системе, TEMP1 – на Температура чипсета, TEMP2 – на Температура процессора. У вас должно получиться так, как показано на скриншоте ниже (Рис. 3). Чтобы войти в режим редактирования строки поставьте курсор на нужную строку и щёлкните мышкой ещё раз.

Thaiphoon Burner HW Monitor
Рис. 3

В столбце DAC formula для температуры можно ввести корректировочный коэффициент, например 0,99, который умножается на её текущее значение. Но делать это следует только в тех случаях, когда ощущается значительная погрешность в измерении температурным датчиком. Лучше оставить это поле пустым.

Теперь приступим к VIN-линиям. Повторно воспользуемся схемой подключения (Рис. 4) для определения нужных нам адресов регистров и составления формул.

ITE IT8686E voltage inputs
Рис. 4. Схема подключения VIN-линий ITE IT8686E к источникам напряжения

Итак, по крайней левой линии VIN4 на схеме на вход VIN4 мультиплексора приходит сигнал от источника VCore SOC (SOC_SIO). Согласно Таблицы 2 оцифрованный уровень напряжения сохраняется в регистр с адресом 24h.

По линии VIN0 традиционно измеряется напряжение на ядре процессора CPU VCore, термодиод которого подключён ко входу VIN0 мультиплексора. Согласно Таблицы 2 значение напряжения сохраняется в регистре с адресом 20h. Напряжение VDDQ на модулях оперативной памяти измеряется по линии VIN6 и записывается в числовом выражении в регистр 26h. Первые три напряжения по уровню ниже 3,072 В, поэтому в столбце DAC formula для них указывается только разрешение АЦП – 0,012 В.

Следующие три напряжения на схеме (Рис. 4) VCC3 (+3,3 В), VCC (+5 В) и +12V (+12 В) выше 3,072 В, поэтому, чтобы АЦП смог их измерить, их уровни понижаются параллельным включением в цепь резистора. Итак, по Формуле 1 рассчитаем делитель напряжения VCC3, которое приходит на вход VIN1 мультиплексора: (6,49+10)/10=1,649. В Thaiphoon Burner находим строку VIN1 переименовываем её в +3,3 В. Далее в столбце DAC formula прописываем формулу расчёта напряжения: 0,012*1,649. Аналогично рассчитываем делитель для напряжений VCC и +12V, измеряемых по линиям VIN3 и VIN2 соответственно: (15+10)/10=2,5 и (75+15)/15=6. Также по аналогии изменяем название линий VIN3 и VIN2 в Thaiphoon Burner и прописываем формулы с учётом делителей: 0,012*2,5 и 0,012*6. Последнее на схеме напряжение A_VDDP поступает на вход VIN5 мультиплексора и сохраняется в числовом виде в регистре 25h. И для полноты эксперимента линию VIN8 переименовываем в VBAT и задаём формулу расчёта в виде 0,012*2. Таким образом, у вас должно получиться, как на скриншоте ниже (Рис. 5).

Thaiphoon Burner HW Monitor
Рис. 5

Теперь, когда наш профиль готов, мы можем его сохранить в виде файла. Для этого нажимаем кнопку Save, задаём желаемое название профиля и нажимаем ОК. Профиль будет создан в текстовом виде и сохранён в каталоге HwProfiles. При желании вы можете отредактировать его в любом текстовом редакторе.

Теперь добавим в профиль поддержку IT8792E, который обнаруживается через опрос адресного порта 4Eh. Как было сказано в первой части статьи, данная микросхема имеет три температурных входа EC_TEMP1, EC_TEMP2 и EC_TEMP3, подключенных к наружным термисторам материнской платы. В соответствии с Таблицей 2 целочисленные значения температур записываются в регистры 29h, 2Ah и 2Bh соответственно. В Thaiphoon Burner находим строки TEMP0, TEMP1 и TEMP2 и переименовываем их в Температура PCIE 8x, Температура PCIE x16 и Температура в системе соответственно.

Для разбора VIN-линий снова обратимся к схеме их подключения (Рис. 6).

ITE IT8792E voltage inputs
Рис. 6. Схема подключения VIN-линий ITE IT8792E к источникам напряжений

Обратите внимание, что уровень напряжений 5VSB и VPP_MEM понижается резисторами ECR35 и ECR12 соответственно. Поэтому делитель для 5VSB и VPP_MEM одинаковый и равен (6,49+10)/10=1,649. Рекомендую его использовать вам в первую очередь, когда будете самостоятельно подбирать делители для тех или иных напряжений, т.к. он почти универсальный. Остальные напряжения делителей не требуют. Теперь можно приступить к переименованию строк в Thaiphoon Burner, сопоставляя им названия согласно схеме (Рис. 6): VIN0VCORE, VIN1DDRVTT, VIN2PM_1V05 и т.д. Нажмите кнопку Save для сохранения профиля. В конечном итоге результат вашей работы должен выглядеть, как на скриншоте ниже (Рис. 7).

Thaiphoon Burner HW Monitor
Рис. 7

Также вы можете упорядочить строки в наиболее приемлемом для вас виде. Для этого в режиме редактирования доступно контекстно меню, из которого необходимо выбрать команду Move up или Move down для смещения строки вверх или вниз. Однако гораздо быстрее это делать сочетанием клавиш Ctrl+U или Ctrl+J. Помимо этого через контекстное меню предусмотрено добавление, удаление и вставка строк. Не забывайте сохранять профиль после каждого изменения.

Итог

После прочтения материала, молодое поколение наверняка почувствовало себя «хакерами». Ещё бы! Мир программирования компьютерного железа невероятно увлекательный и таинственный. Я постарался максимально доходчиво рассказать простому пользователю, как устроен аппаратный мониторинг материнских плат, приоткрыть завесу тайны в отношении того, как взаимодействует программное обеспечение с EC-контроллерами. Возможно, для кого-то эта информация не нова, но я уверен, что большинство ею заинтересовалось. Теперь вы знаете, по какому принципу HWINFO и AIDA64 считывают показания температур и напряжений. Но благодаря данной статье и возможностям Thaiphoon Burner любопытный читатель может пойти ещё дальше, а не ограничиваться возможностями данных программ.

HOME HISTORY LICENSES DOWNLOAD TIPS&TRICKS FAQ CONTACTS FORUMS

Project by Vitaliy Jungle
Copyright © 2008 Showshock Softnology
All Rights Reserved

Company Location
Warsaw, Republic of Poland
http://www.softnology.biz