6. Тактирование и температурный режим.

Поддержание адекватного температурного режима в современном компьютере – тема
отдельной статьи. Особенно, если этот компьютер разогнан. Вместе с тем, есть
один аспект, имеющий отношение, как к тактированию, так и к температурному
режиму. Процессоры Intel (начиная от Pentium 4) и AMD (начиная от Athlon 64)
поддерживают усовершенствованные механизмы управления температурным режимом,
позволяющие не только отключать процессор, когда продолжение работы чревато
физическим разрушением кристалла из-за перегрева, но и не допускать приближения
к данной критической точке. Для этого используется два температурных порога:
Первый – это температура, при которой начинается вмешательство системы
управления с целью понижения температуры процессора. Вмешательство выражается в
снижении тактовой частоты (если быть точным, то происходит периодический пропуск
определенного количества тактов, а не снижение частоты). Второй порог
достигается, если вмешательство системы управления не привело к результату,
процессор нагрелся до температуры, при которой существует опасность разрушения
кристалла, поэтому необходимо аварийное выключение. Значения температур для
первого и второго порогов зависят от модели процессора. Например, для
процессоров класса Intel Pentium 4 (Prescott) типовые значения порогов
соответственно 70 и 90 градусов Цельсия (рекомендуется уточнять эту информацию,
используя Data Sheet на конкретный процессор). Таким образом, при описанном выше
алгоритме управления, результатом перегрева процессора может стать не только
самопроизвольное выключение компьютера или периодические сбои, но и снижение
тактовой частоты и как следствие — производительности. Для контроля температуры
процессора и других параметров, можно использовать экран Hardware Monitoring в
BIOS Setup или утилиты мониторинга, запускаемые в сеансе ОС. Второе может
оказаться предпочтительнее, если существуют подозрение, что температура
процессора недопустимо возрастает только при запуске определенных ресурсоемких
приложений.

 

7. Описание работы программы.

Как и в ранее опубликованных статьях данного цикла, для работы с предлагаемым
примером, в целях монопольного и беспрепятственного взаимодействия программы с
аппаратным обеспечением автор применил "древнюю" технологию отладки под DOS.
Аргументация такого шага и рекомендации по организации рабочего места приведены
в ранее опубликованной статье "64-битный режим под DOS: исследовательская работа
№ 1
".

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

Как было сказано выше, архитектура программно-доступных регистров, используемых
для перепрограммирования генератора, зависит от модели материнской платы, в
частности от типа "южного моста" чипсета и тактового генератора. Поэтому, для
написания универсальной программы потребуется составление базы данных,
описывающей все поддерживаемые платы. В предлагаемом примере эта задача решена
для платы PC Partner / SuperGrace 35-8695 (Socket A, KT133) c "южным мостом" VIA
VT82C686A и тактовым генератором Cypress W230H. В данной плате, как и в
большинстве более современных плат, тактовый генератор выполнен в виде отдельной
микросхемы, программный доступ к его регистрам обеспечивается по 2-проводной
последовательной шине SMB (System Management Bus). Контроллер шины SMB находится
в составе "южного моста" чипсета. Заинтересованный читатель может реализовать
поддержку своей платы на базе приведенного примера.

Заметим, что программное управление тактовым генератором позволяет не только
управлять частотой процессора. Используя этот механизм, BIOS может выключить
тактирование на неиспользуемых слотах PCI, DIMM с целью уменьшения радиопомех,
генерируемых платой, изменять частоты тактирования других устройств и т.п.

В приведенном примере рассматривается генератор, регистры которого доступны
только для записи посредством SMB транзакции Write Block. Многие современные
платы используют генераторы, регистры которых доступны также для чтения
посредством SMB транзакции Read Block. В этом случае появляется дополнительное
удобство для программ, которым необходимо изменить только часть битов, они могут
выполнить чтение-модификацию-запись, вместо подготовки образа всего регистрового
блока для записи в генератор.

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

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

Прилагаемый каталог WORK содержит следующие файлы:

ASM_TD.BAT – обеспечивает ассемблирование, линковку и запуск программы под
отладчиком. При запуске TASM и TLINK используются опции, обеспечивающие
добавление отладочной информации в EXE файл.

ASM_EXE.BAT – обеспечивает ассемблирование и линковку. Генерируется EXE файл.

OVERCLK.ASM – основной модуль программы.

OUTPUT.INC – процедура вывода строки на экран с использованием сервиса DOS, а
также процедуры вывода десятичных чисел.

CPUID.INC – процедура проверки наличия поддержки процессором инструкции CPUID.

CLK_IRQ0.INC – процедура измерения тактовой частоты процессора, использующая
системный таймер, основана на определении приращения содержимого регистра TSC за
время между двумя прерываниями IRQ0.

SMB_WBLK.INC – процедура выполнения транзакции Write Block на шине SMB. Данный
вид транзакции используется для записи в регистры тактового генератора.

DELAY.INC – процедура задержки с использованием прерываний IRQ0 от системного
таймера. Применяется в данной программе для синхронизации и отработки паузы
перед измерением тактовой частоты процессора. Это уменьшает влияние факторов,
снижающих точность измерения.

DATASEGS.INC – сегменты данных: сегмент для хранения переменных, сегмент с
текстовыми строками, сегмент стека.

CLK_DATA.INC – блок данных для записи в регистры тактового генератора.

SMBUS.TXT – текстовый файл, краткая справка по регистрам контроллера SMBus и
назначению битов в регистрах.

Рассмотрим выполнение основного модуля. Нумерация пунктов данного описания
соответствует нумерации пунктов комментариев в исходном тексте — файле
WORK\overclk.asm.

1) Контрольная точка 00h – начало выполнения программы. Вывод в порт 80h кода
00h.

2) Установка SS:SP для адресации стека.

3) Проверяем, что процессор в реальном режиме (MSW.0=0), иначе уходим на
генерацию сообщения об ошибке и завершение программы.

4) Проверяем, что процессор поддерживает регистр TSC (Time Stamp Counter), иначе
уходим на генерацию сообщения об ошибке и завершение программы.

5) Проверяем, что BIOS поддерживает интерфейс PCIBIOS, иначе уходим на генерацию
сообщения об ошибке и завершение программы. Подробности в [18].

6) Проверяем, что в конфигурационном пространстве PCI присутствует устройство
Power Management Unit, входящее в состав "южного моста" VIA VT82C686A, иначе
уходим на генерацию сообщения об ошибке и завершение программы. Подробности в
[19].

Отметим, что проверить наличие на плате заданного тактового генератора мы не
можем, так как генераторы не поддерживают универсального механизма
детектирования. То есть на плате с требуемым "южным мостом" но другим
генератором программа может приступить к программированию генератора и
отработать некорректно, так как генератор другой. Один из путей решения проблемы
– добавление процедуры идентификации модели платы по информации из BIOS.

7) Программируем конфигурационные регистры устройства Power Management Unit для
обеспечения доступа к регистрам контроллера SMB через диапазон в пространстве
ввода-вывода. Сохраняем базовый адрес этого диапазона для последующего
использования. Подробности в [19].

8) Выдаем сообщение об успешном завершении конфигурирования контроллера SMB.

9) Измеряем тактовую частоту процессора, используя системный таймер. Измеряется
частота ядра процессора (умноженная процессором).

10) Выводим результат измерения на экран. Это частота до перенастройки
генератора.

11) Перепрограммируем генератор. Блок данных, детально описанный в файле
CLK_DATA.INC, посредством SMB транзакции Write Block, передается в тактовый
генератор. После данной операции должна установиться новая тактовая частота
процессора, в соответствии с содержимым файла CLK_DATA.INC. За выбор частоты
отвечает байт 0 регистрового блока. Бит 3 следует установить в "1" для активации
режима программного переключения частоты. Биты 6,5,4,2,1 следует установить в
соответствии с требуемым новым значением частоты, например для установки частоты
104 MHz байт 0 должен содержать 01111100b=7Ch. Подробности в [19], [20], [21].
Можно использовать описание контроллера SMB из документа [10], так как
контроллеры SMB микросхем Intel PIIX4 (82371AB) и VIA VT82C686A/B совместимы.

Таким образом, источником информации по содержанию отправляемого блока данных
является документация на микросхему тактового генератора. Источником информации
по протоколу отправки этого блока является спецификация шины SMB и информация по
контроллеру SMB из документа на "южный мост" чипсета.

12) Если при записи блока данных в тактовый генератор возникли ошибки на шине
SMB, генерируем сообщение об ошибке.

13) Измеряем тактовую частоту процессора, используя системный таймер. Измеряется
частота ядра процессора (умноженная процессором).

14) Выводим результат измерения на экран. Это частота после перенастройки
генератора.

15) Восстанавливаем состояние конфигурационных регистров контроллера SMB,
модифицированных в ходе работы программы. Подробности в [19].

16) Exit Point 1 – точка выхода, используемая при отсутствии ошибок. Выдаем на
экран сообщение об успешном завершении программы и выходим в DOS с кодом
завершения 00h.

17) Exit Point 2 – точка выхода, используемая при возникновении ошибок,
приводящих к невозможности запуска программы. Выводит сообщения об ошибке и
выход в DOS. Примечание. Если возникла ошибка на стадии передачи блока по шине
SMB, сообщение об ошибке генерируется на шаге 12, затем выполнение продолжается
обычным образом и завершается на Exit Point 1, без аварийного выхода.

 

Источники информации

Электронные документы, доступные на сайте
developer.intel.com.

1) Intel Pentium 4 Processor 660, 650, 640 and 630 and Intel Pentium 4
Processor Extreme Edition Datasheet. Document Number 306382-001.
2) Intel Pentium D Processor 840, 830 and 820 Datasheet. Document Number
307506-001.
3) Intel Pentium D Processor 900 Sequence and Intel Pentium Processor Extreme
Edition 955, 965 Datasheet. Document Number 310306-006.
4) Intel Celeron D Processor 300 Sequence Datasheet. Document Number 304092-006.
5) Intel Celeron Processor 400 Sequence Datasheet. Document Number 316963-001.
6) Intel Celeron Dual-Core Processor E1000 Series Datasheet. Document Number
318924-001.
7) Intel Core Duo Processor and Intel Core Solo Processor on 65 nm Process
Datasheet. Document Number 309221-004.
8) Intel Core 2 Extreme Processor X6800 and Intel Core 2 Duo Desktop Processor
E6000 and E4000 Sequences Datasheet. Document Number 313278-004.
9) Intel Core 2 Extreme Processor QX9000 Series and Intel Core 2 Quad Processor
Q9000 Series Datasheet. Document Number 318726-003.
10) Intel 82371AB PCI-TO-ISA / IDE XCELERATOR (PIIX4) Datasheet. Order Number
290562-001.

Электронные документы, доступные на сайте
developer.amd.com.

11) AMD Functional Data Sheet, 754 Pin Package. Publication # 31410.
12) AMD Functional Data Sheet, 939 Pin Package. Publication # 31411.
13) AMD Functional Data Sheet, 940 Pin Package. Publication # 31412.
14) AMD Athlon 64 Processor Power and Thermal Data Sheet. Publication #30430.
15) AMD NPT Family 0Fh Desktop Processor Power and Thermal Data Sheet.
Publication #33954.
16) Clock Generator Specification for AMD64 Processors. Publication # 24707.

Электронные документы, доступные на сайте
smbus.org.

17) System Management Bus (SMBus) Specification. Version 2.0.

Электронные документы, доступные на сайте
pcisig.com.

18) PCI BIOS Specification. Revision 2.1.

Электронные документы, доступные на сайте
datasheetarchive.com.

(Информация на данном сайте более полная, чем на "родных" сайтах
производителей указанных микросхем.)
19) VIA VT82C686A South Bridge Datasheet. Revision 1.54. Для поиска документа
набирать строку "VT82C686".
20) VIA VT82C686B South Bridge Datasheet. Revision 1.71. Для поиска документа
набирать строку "VT82C686".
21) Cypress W230 Spread Spectrum FTG (Frequency Timing Generator) for VIA K7
Chipset. Для поиска документа набирать строку "W230".

 

Книги

22) В.Л. Григорьев. Микропроцессор i486. Архитектура и программирование.
Москва ТОО "ГРАНАЛ" 1993.
23) В.Г. Артюхов, А.А. Будняк. В.Ю. Лапий. С.М. Молявко, А.И. Петренко.
Проектирование микропроцессорной электронно-вычислительной аппаратуры.
Справочник. Киев "Тэхника" 1988.
24) К. Г. Самофалов, О.В. Викторов. Микропроцессоры. Библиотека инженера. Киев
"Тэхника" 1989.
25) 2B ProGroup: В.А. Вегнер, А.Ю. Крутяков, В.В. Серегин, В.А. Сидоров, А.В.
Спесивцев. Аппаратура персональных компьютеров и ее программирование. IBM
PC/XT/AT и PS/2. Москва "Радио и связь" 1995.
26) Ю.М. Казаринов, В.Н. Номоконов, Г.С. Подклетнов, Ф.В. Филиппов.
Микропроцессорный комплект К1810. Структура, программирование, применение.
Справочная книга. Москва "Высшая школа" 1990.

Оставить мнение

Check Also

В гостях у чертёнка. FreeBSD глазами линуксоида

Порог вхождения новичка в мир Linux за последние десять-пятнадцать лет ощутимо снизился. О…