legal note
IC Book © 2001

hardware
software

support
buy

Home page
   




Press
Резидентный термометр
 


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

О системах охлаждения, теплопроводящих пастах и утилитах мониторинга ска­зано немало, поэтому повторяться не будем. Статья рассчитана на спе­ци­а­лис­тов, же­лающих "копнуть глубже", а именно изучить данный вопрос на уровне прин­ци­пи­аль­ной электрической схемы и ассемблера. Рассмотрены системные ре­гист­ры процессоров Intel и AMD, обеспечивающие программное считывание тем­пе­ра­ту­ры, а также управление режимом процессора для оптимизации энер­го­по­треб­ле­ния и недопущения перегрева. Приведен пример программы на языке ас­семб­ле­ра, выполняющей считывание текущей температуры процессора и вы­вод зна­че­ния на индикатор POST-карты.

Ограниченный объем статьи позволяет привести описание только основных ре­гист­ров, связанных с управлением температурным режимом. Важно также по­нимать, что рассматриваемые системные ресурсы не стандартизованы как часть архитектуры PC и реализованы по-разному в процессорах различных мо­де­лей, даже одного производителя. Ниже мы рассмотрим два примера, по од­но­му для Intel и AMD.

К истории вопроса

Сегодня наши исследования будут сосредоточены на современных тех­но­ло­ги­ях измерения температуры процессора, при этом все "участники событий": датчик температуры, АЦП, преобразующий сигнал от датчика в цифровой код, про­грам­мно-доступные регистры, обеспечивающие чтение результатов работы АЦП, – физически находятся в составе процессора.

Отметим, что в системах предыдущих поколений использовалась схема, ког­да в составе процессора находится только термодатчик (диод), электроды которого выведены на два контакта процессорного сокета. Эти контакты подключаются к схеме Hardware Monitoring, обычно расположенной в составе SIO-контроллера или присутствующей в виде отдельного чипа. При этом для получения значения тем­пе­ра­ту­ры необходимо считывать соответствующие регистры подсистемы Hard­ware Mo­ni­to­r­ing (см. подробности в [16-19]). В большинстве современных ма­те­рин­ских плат, "новая" и "старая" схемы существуют совместно, что дает воз­мож­ность из­ме­рить температуру процессора несколькими методами и срав­нить по­лу­чен­ные результаты.

Процессоры Intel. Регистр IA32_THERM_STATUS

Регистр IA32_THERM_STATUS адресуется как MSR с ад­ре­сом 0000019Ch. Его разрядность – 64 бита. Доступ к Model-Specific регистрам про­цес­со­ра и ин­струк­ции RDMSR, WRMSR детально описаны в [3]. Назначение би­тов ре­ги­ст­ра сле­ду­ю­щее:

Биты 63-32 Read Only Reserved
  Зарезервированы, не используются
  
Бит 31 Read Only Reading Valid
  Индицирует достоверность значения температуры (Digital Readout), чи­та­е­мо­го в битах 22-16. "1" означает, что значение битов 22-16 достоверно
  
Биты 30-27 Read Only Resolution in Degrees Celsius
  Содержат значение разрешающей способности (дискретности), с которой ра­ботает термодатчик, в градусах Цельсия. При программировании по­ро­го­вых значений температуры для генерации прерываний, рекомендуется, что­бы целевое значение температуры для генерации прерывания, от­сто­я­ло от текущего значения температуры минимум на величину N+1, где N – дискретность. Иначе возможна хаотическая генерация прерываний при тем­пе­ра­ту­ре, близкой к пороговой
  
Биты 26-23 Read Only Reserved
  Зарезервированы, не используются
  
Биты 22-16 Read Only Digital Readout
  Результат работы термодатчика. Данное битовое поле достоверно, если бит 31 рассматриваемого регистра установлен в "1". Для получения чис­лен­но­го значения температуры, значение, прочитанное из этого би­то­во­го по­ля, следует вычесть из константы TCC Activation Temperature. Зна­че­ние этой константы зависит от модели процессора, она определяет тем­пе­ра­ту­ру, при которой активируются механизмы защиты процессора от пе­ре­гре­ва
  
Биты 15-10 Read Only Reserved
  Зарезервированы, не используются
  
Бит 9 Read, Write for clear to "0" Thermal Threshold #2 Log
  Статусный бит, фиксирующий факт достижения пороговой температуры (второй программно-устанавливаемый порог). При достижении порогового зна­чения, бит устанавливается в "1" и остается в "1" независимо от по­сле­ду­ю­ще­го изменения температуры. Этот бит устанавливается ап­па­рат­но, а об­ну­ля­ет­ся только программно или при сбросе процессора
 

Отметим, что свойство Log-битов "запоминать" факт достижения по­ро­го­во­го значения температуры позволяет программному обеспечению про­ве­рять, имел ли место перегрев процессора в течение заданного ин­тер­ва­ла времени, даже в том случае, если на момент чтения регистра тем­пе­ра­ту­ра про­цес­сора в норме

Бит 8 Read Only Thermal Threshold #2 Status
  Статусный бит, отражающий результат сравнения текущей и пороговой тем­пературы (второй программно-устанавливаемый порог). "0" означает, что текущая температура меньше пороговой, "1" – выше или равна пороговой
  
Бит 7 Read, Write for clear to "0" Thermal Threshold #1 Log
  Статусный бит, фиксирующий факт достижения пороговой температуры (первый программно-устанавливаемый порог)
  
Бит 6 Read Only Thermal Threshold #1 Status
  Статусный бит, отражающий результат сравнения текущей и пороговой тем­пе­ра­ту­ры (первый программно-устанавливаемый порог)
  
Бит 5 Read, Write for clear to "0" Critical Temperature Log
  Статусный бит, фиксирующий факт достижения критической температуры про­цес­сора. При достижении критической температуры, бит ус­та­нав­ли­ва­ет­ся в "1" и удерживает это значение независимо от последующего из­ме­не­ния температуры. Этот бит устанавливается аппаратно, а об­ну­ля­ет­ся толь­ко программно или при сбросе процессора
  
Бит 4 Read Only Critical Temperature Status
  Статусный бит, устанавливается в "1" если текущая температура про­цес­со­ра выше или равна критической
  
Бит 3 Read, Write for clear to "0" PROCHOT# or FORCEPR# Log
  Статусный бит, фиксирующий факт получения процессором входного сиг­нала о достижении критической температуры узлов материнской платы. При поступлении такого сигнала, бит устанавливается в "1". Этот бит ус­та­нав­ли­ва­ет­ся аппаратно, а обнуляется только программно или при сбросе процессора. Таким образом, функциональность подсистемы тер­мо­конт­ро­ля процессора распространяется и на узлы, внешние по отношению к про­цес­со­ру, обычно это регулятор напряжения питания процессора
  
Бит 2 Read Only PROCHOT# or FORCEPR# Event
  Статусный бит, который устанавливается в "1", если в данный момент активен входной сигнал о достижении критической температуры узлов ма­те­рин­ской платы
  
Бит 1 Read, Write for clear to "0" Thermal Status Log
  Статусный бит, фиксирующий факт выдачи процессором сигнала, со­об­ща­ю­ще­го внешним устройствам о перегреве процессора. Этот бит устанавливается аппаратно, а обнуляется только программно или при сбросе процессора
  
Бит 0 Read Only Thermal Status
  Статусный бит, отражающий текущее состояние выходного сигнала, со­об­ща­ю­ще­го внешним устройствам о перегреве процессора
  

Для чтения температуры мы должны проверить состояние бита 31 (Reading Valid). Если "1" показания термометра достоверны, если "0" – термометр не ра­бо­тает. Затем прочитать биты 22-16 (Digital Readout). Значение этого битового по­ля нужно вычесть из константы TCC Activation Temperature, которая зависит от мо­де­ли процессора. Полученная разность численно равна температуре в гра­ду­сах Цельсия. Подробности в [4].

Перед чтением регистра IA32_THERM_STATUS MSR и интерпретацией поля Digital Readout, необходимо убедиться, что технология DTS (Digital Thermal Sen­sor) поддерживается процессором. Для этого следует использовать функцию 6 инструкции CPUID. Подробности в [6].


Последняя страница   Последняя страница Следующая страница   Следующая страница






about
press


вверх