Аппаратный мониторинг материнских плат. Программно-аппаратная реализация (часть 2)
Устройство аппартного монитора
Как было сказано в первой части статьи, «мультиконтроллер» содержит один из наиболее важных компонентов – блок аппаратного монитора, иначе – контроллер окружения, на который возлагаются функции непрерывного мониторинга температур и напряжений, а также контроль и управление оборотами вентиляторов. Для того, чтобы разобраться, как реализован принцип работы EC-контроллера, ознакомимся со схемой, изображённой на Рис. 1.
Здесь ЕС-контроллер представлен в виде совмещённого устройства, состоящего из мультиплексора и АЦП – аналого-цифрового преобразователя. Для тех, кто не знаком с курсом цифровой схемотехники, поясню, что мультиплексор представляет собой, по сути, коммутатор, у которого есть несколько сигнальных входов и один выход. Задача мультиплексора состоит в передаче сигнала, поступившего на один из его входов и последующей передаче на выход. На схеме (Рис. 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
|
Данная формула приведена неспроста и нам она очень скоро понадобится.
Другой важной характеристикой АЦП аппаратного монитора является разрешение. В англоязычной терминологии эта характеристика обозначается как 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 |
Регистры
реклама
Любое программируемое электронно-цифровое устройство обладает регистрами. Они представляют собой энергозависимые ячейки памяти с определёнными доступом – 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 / температура (возможно) |
Порты ввода-вывода
Итак, мы приблизились к самому интригующему разделу данной статьи, благодаря которой любой обладатель материнской платы с «мультиконтроллером» фирмы 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).
Как видим, пока достаточно затруднительно определить, какое именно напряжение отслеживается, например, по линии 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). Чтобы войти в режим редактирования строки поставьте курсор на нужную строку и щёлкните мышкой ещё раз.
В столбце DAC formula для температуры можно ввести корректировочный коэффициент, например 0,99, который умножается на её текущее значение. Но делать это следует только в тех случаях, когда ощущается значительная погрешность в измерении температурным датчиком. Лучше оставить это поле пустым.
Теперь приступим к VIN-линиям. Повторно воспользуемся схемой подключения (Рис. 4) для определения нужных нам адресов регистров и составления формул.
Итак, по крайней левой линии 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).
Теперь, когда наш профиль готов, мы можем его сохранить в виде файла. Для этого нажимаем кнопку 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).
Обратите внимание, что уровень напряжений 5VSB и VPP_MEM понижается резисторами ECR35 и ECR12 соответственно. Поэтому делитель для 5VSB и VPP_MEM одинаковый и равен (6,49+10)/10=1,649. Рекомендую его использовать вам в первую очередь, когда будете самостоятельно подбирать делители для тех или иных напряжений, т.к. он почти универсальный. Остальные напряжения делителей не требуют. Теперь можно приступить к переименованию строк в Thaiphoon Burner, сопоставляя им названия согласно схеме (Рис. 6): VIN0 – VCORE, VIN1 – DDRVTT, VIN2 – PM_1V05 и т.д. Нажмите кнопку Save для сохранения профиля. В конечном итоге результат вашей работы должен выглядеть, как на скриншоте ниже (Рис. 7).
Также вы можете упорядочить строки в наиболее приемлемом для вас виде. Для этого в режиме редактирования доступно контекстно меню, из которого необходимо выбрать команду Move up или Move down для смещения строки вверх или вниз. Однако гораздо быстрее это делать сочетанием клавиш Ctrl+U или Ctrl+J. Помимо этого через контекстное меню предусмотрено добавление, удаление и вставка строк. Не забывайте сохранять профиль после каждого изменения.
Итог
После прочтения материала, молодое поколение наверняка почувствовало себя «хакерами». Ещё бы! Мир программирования компьютерного железа невероятно увлекательный и таинственный. Я постарался максимально доходчиво рассказать простому пользователю, как устроен аппаратный мониторинг материнских плат, приоткрыть завесу тайны в отношении того, как взаимодействует программное обеспечение с EC-контроллерами. Возможно, для кого-то эта информация не нова, но я уверен, что большинство ею заинтересовалось. Теперь вы знаете, по какому принципу HWINFO и AIDA64 считывают показания температур и напряжений. Но благодаря данной статье и возможностям Thaiphoon Burner любопытный читатель может пойти ещё дальше, а не ограничиваться возможностями данных программ.
Теги
Лента материалов
Соблюдение Правил конференции строго обязательно!
Флуд, флейм и оффтоп преследуются по всей строгости закона!
Комментарии, содержащие оскорбления, нецензурные выражения (в т.ч. замаскированный мат), экстремистские высказывания, рекламу и спам, удаляются независимо от содержимого, а к их авторам могут применяться меры вплоть до запрета написания комментариев и, в случае написания комментария через социальные сети, жалобы в администрацию данной сети.
Комментарии Правила