Какую функцию выполняет тактовый генератор компьютера
Поддержание адекватного температурного режима в современном компьютере – тема
отдельной статьи. Особенно, если этот компьютер разогнан. Вместе с тем, есть
один аспект, имеющий отношение, как к тактированию, так и к температурному
режиму. Процессоры Intel (начиная от Pentium 4) и AMD (начиная от Athlon 64)
поддерживают усовершенствованные механизмы управления температурным режимом,
позволяющие не только отключать процессор, когда продолжение работы чревато
физическим разрушением кристалла из-за перегрева, но и не допускать приближения
к данной критической точке. Для этого используется два температурных порога:
Первый – это температура, при которой начинается вмешательство системы
управления с целью понижения температуры процессора. Вмешательство выражается в
снижении тактовой частоты (если быть точным, то происходит периодический пропуск
определенного количества тактов, а не снижение частоты). Второй порог
достигается, если вмешательство системы управления не привело к результату,
процессор нагрелся до температуры, при которой существует опасность разрушения
кристалла, поэтому необходимо аварийное выключение. Значения температур для
первого и второго порогов зависят от модели процессора. Например, для
процессоров класса Intel Pentium 4 (Prescott) типовые значения порогов
соответственно 70 и 90 градусов Цельсия (рекомендуется уточнять эту информацию,
используя Data Sheet на конкретный процессор). Таким образом, при описанном выше
алгоритме управления, результатом перегрева процессора может стать не только
самопроизвольное выключение компьютера или периодические сбои, но и снижение
тактовой частоты и как следствие - производительности. Для контроля температуры
процессора и других параметров, можно использовать экран Hardware Monitoring в
BIOS Setup или утилиты мониторинга, запускаемые в сеансе ОС. Второе может
оказаться предпочтительнее, если существуют подозрение, что температура
процессора недопустимо возрастает только при запуске определенных ресурсоемких
приложений.
3. Платформы PC/AT 486. Первые процессоры с умножением частоты.
В процессорах класса 486 впервые появилось понятие "множитель". Например,
процессор 80486DX2-50 тактировался от частоты 25 MHz, на этой частоте работала
шина. Внутри процессора происходило умножение частоты тактового сигнала на 2, и
ядро работало на частоте 50 MHz. Разумеется, этот процессор работает медленнее,
чем 80486DX-50, у которого и шина и ядро тактируются от 50 MHz. Тогда почему же
разработчики приняли такое решение? Дело тут в том, что технологических
возможностей для роста частоты ядра значительно больше, чем для роста частоты
шины. Цепи системной шины реализованы в виде проводников на плате, соединяющих
процессор и "северный мост" чипсета. Цепи ядра реализованы внутри кристалла
процессора, здесь физическая длина проводников и количество буферных элементов,
через которые проходят сигналы, значительно меньше. Чтобы максимально
реализовать разгонные потенциалы, как ядра, так и шины, их требовалось запустить
на разных частотах, что и было сделано путем введения механизма умножения
частоты, который успешно применяется и в современных процессорах. Для
процессоров поколения 486 были достигнуты частоты 50 MHz (для шины) и 133MHz
(для ядра). Приведены штатные значения, без учета экспериментов по разгону.
Заметим, что переключатели задания частоты шины подключены к управляющим
входам тактового генератора, так как он вырабатывает частоту, а переключатели
задания множителя – к управляющим входам процессора, так как умножение
происходит внутри процессора.
4.8. Тактовые генераторы МК
Современные МК содержат встроенные тактовые генераторы , которые требуют минимального числа внешних времязадающих элементов. На практике используются три основных способа определения тактовой частоты генератора: с помощью кварцевого резонатора, керамического резонатора и внешней RC-цепи.
Типовая схема подключения кварцевого или керамического резонатора приведена на рис. 4.9а.
Рис. 4.9. Тактирование с использованием кварцевого или керамического резонаторов (а) и с использованием RC-цепи (б).
Кварцевый или керамический резонатор Q подключается к выводам XTAL1 и XTAL2 , которые обычно представляют собой вход и выход инвертирующего усилителя. Номиналы конденсаторов C1 и C2 определяются производителем МК для конкретной частоты резонатора. Иногда требуется включить резистор порядка нескольких мегаом между выводами XTAL1 и XTAL2 для стабильной работы генератора.
Использование кварцевого резонатора позволяет обеспечить высокую точность и стабильность тактовой частоты (разброс частот кварцевого резонатора обычно составляет менее 0,01%). Такой уровень точности требуется для обеспечения точного хода часов реального времени или организации интерфейса с другими устройствами. Основными недостатками кварцевого резонатора являются его низкая механическая прочность (высокая хрупкость) и относительно высокая стоимость .
При менее жестких требованиях к стабильности тактовой частоты возможно использование более стойких к ударной нагрузке керамических резонаторов. Многие керамические резонаторы имеют встроенные конденсаторы, что позволяет уменьшить количество внешних подключаемых элементов с трех до одного. Керамические резонаторы имеют разброс частот порядка нескольких десятых долей процента (обычно около 0,5 %).
Самым дешевым способом задания тактовой частоты МК является использование внешней RС-цепи, как показано на рис. 4.9б. Внешняя RC-цепь не обеспечивает высокой точности задания тактовой частоты (разброс частот может доходить до десятков процентов). Это неприемлемо для многих приложений, где требуется точный подсчет времени. Однако имеется масса практических задач, где точность задания тактовой частоты не имеет большого значения.
Зависимость тактовой частоты МК от номиналов RC-цепи зависит от конкретной реализации внутреннего генератора и приводится в руководстве по применению контроллера.
Практически все МК допускают работу от внешнего источника тактового сигнала , который подключается ко входу XTAL1 внутреннего усилителя. При помощи внешнего тактового генератора можно задать любую тактовую частоту МК (в пределах рабочего диапазона) и обеспечить синхронную работу нескольких устройств.
Некоторые современные МК содержат встроенные RC или кольцевые генераторы, которые позволяют контроллеру работать без внешних цепей синхронизации. Работа внутреннего генератора обычно разрешается путем программирования соответствующего бита регистра конфигурации МК.
В большинстве моделей МК частота времязадающего элемента (резонатора или RC-цепи) и частота тактирования fBUS жестко связаны коэффициентом деления встроенного делителя частоты . Поэтому изменение частоты программным путем не представляется возможным. Однако ряд последних семейств МК (например, HC08 фирмы Motorola) имеют в своем составе схему тактирования, основанную на принципе синтезатора частоты с контуром фазовой автоподстройки ( PLL — phase loop lock). Такая схема работает как умножитель частоты и позволяет задавать тактовую частоту с помощью низкочастотного кварцевого резонатора, что снижает уровень электромагнитного излучения МК. Коэффициенты деления контура PLL могут быть изменены программным путем, что позволяет снизить тактовую частоту (и, соответственно, потребляемую мощность ) в промежутки времени, когда высокое быстродействие не требуется.
В некоторых МК семейства AVR фирмы Atmel тактовая частота контроллера, задаваемая внутренней RC-цепью, также может изменяться программными средствами.
Источники информации
17) System Management Bus (SMBus) Specification. Version 2.0.
18) PCI BIOS Specification. Revision 2.1.
(Информация на данном сайте более полная, чем на "родных" сайтах
производителей указанных микросхем.)
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.
Помимо микропроцессора и системной памяти на системной ( материнской) плате располагаются и другие важные модули, обеспечивающие работоспособность компьютера: контроллеры прерываний и прямого доступа, тактовый генератор , системный таймер , буферные микросхемы, контроллер шины и т.д. В первых компьютерах семейства все эти функции выполняли отдельные специализированные микросхемы сравнительно низкой степени интеграции. В современных компьютерах применяются сверхбольшие интегральные схемы, которые, тем не менее, обеспечивают полную программную и аппаратную совместимость с предыдущими моделями. Эти микросхемы называются набором микросхем или chipset (чипсет). Преимущества такого подхода — chipset занимает меньше места на плате, меньшая потребляемая мощность , значительно большая надежность . Компьютеры, выполненные на системных платах с chipset известных фирм, имеют лучшую репутацию. В большинство наборов микросхем входит так называемый периферийный контроллер , включающий два контроллера прерываний , два контроллера прямого доступа к памяти, таймер , часы реального времени , а также CMOS - память .
7.4.1. Тактовый генератор
Системный тактовый генератор генерирует сигналы синхронизации для работы микропроцессора, всех контроллеров и системной шины. Для обеспечения высокой стабильности тактовых частот и их независимости от температуры применяются кварцевые резонаторы, то есть кристаллы кварца, имеющие высокостабильную частоту собственных колебаний. Как правило, в состав системной платы входит несколько кварцевых резонаторов, каждый из которых обеспечивает свой тактовый сигнал. Тактовую частоту процессора можно выбирать путем установки перемычек на системной плате. Это позволяет пользователю модернизировать компьютер путем замены процессора на другой, рассчитанный на более высокую тактовую частоту. Иногда удается заставить процессор работать на более высокой тактовой частоте, чем та, на которую он рассчитан, но здесь нужно соблюдать осторожность, так как повышение частоты ведет не только к увеличению потребляемой мощности и перегреву микросхемы, но и к ошибкам и сбоям в работе, причем проявляющихся только в отдельных режимах, например, в многозадачном.
В компьютерах на базе процессоров 486 и Pentium применяется деление опорной тактовой частоты для синхронизации системной шины и внутреннее умножение частоты в процессорах. Например, в процессоре 486DX2-66 используется умножение на два тактовой частоты 33,3 МГц, а в процессорах семейства Pentium применяется умножение на 2,5 (при опорной частоте 60 МГц частота процессора 150 МГц) или на 3 (при опорной частоте 66,6 МГц частота процессора 200 МГц).
В общем случае в компьютере существуют следующие тактовые частоты:
- Host Bus Clock (CLK2IN) — это опорная частота (внешняя частота шины процессора). Именно из нее могут получаться другие частоты и именно она задается перемычками (джамперами);
- CPU Clock ( Core Speed ) — это внутренняя частота процессора, на которой работает его вычислительное ядро. Может совпадать с Host Bus Clock или получаться из нее умножением на 1,5, 2, 2,5, 3, 4. Умножение должно быть предусмотрено в конструкции процессора.
- ISA Bus Clock (ATCLK, BBUSCLK) — это тактовая частота системной шины ISA (сигнал SYSCLK). По стандарту она должна быть близка к 8 МГц, но в BIOS Setup имеется возможность выбрать ее через коэффициент деления частоты Host Bus Clock. Иногда компьютер остается работоспособным и при частоте шины ISA около 20 МГц, но обычно платы расширения ISA разрабатываются из расчета на 8 МГц, и при больших частотах они перестают работать. Не следует рассчитывать, что компьютер станет вдвое быстрее при удвоении этой частоты. Для каналов прямого доступа к памяти на системной плате используется еще один тактовый сигнал SCLK , частота которого, как правило, составляет половину от ISA Bus Clock.
- PCI Bus Clock — это тактовая частота системной шины PCI, которая по стандарту должна быть 25 — 33,3 МГц. Ее обычно получают делением частоты Host Bus Clock на нужный коэффициент. В компьютерах предусматривается возможность ее увеличения до 75 или даже 83 МГц, но из соображений надежности работы рекомендуется придерживаться стандартных значений.
- VLB Bus Clock — это частота локальной шины VLB , определяемая аналогично PCI Bus Clock.
7.4.2. Контроллер прерываний
Контроллеры радиальных прерываний в первых компьютерах выполнялись на микросхемах i8259, каждая из которых имела 8 входов запроса прерываний. В IBM PC AT применялось две таких микросхемы, в результате чего количество входов запросов прерываний увеличилось до 15. Режимы работы контроллеров прерываний определяются процессором путем записи соответствующих управляющих кодов по адресам в пространстве устройств ввода/вывода.
О циклах обмена по прерываниям уже говорилось в разделе 2.2.2. При поступлении запроса прерывания на один из входов IRQ и удовлетворении этого запроса контроллер прерываний вырабатывает выходной сигнал запроса прерывания , поступающий на процессор. В ответ на это процессор запрашивает контроллер о том, прерывание с каким адресом вектора необходимо обслужить. Всего прерываний может быть 256 (от 00 до FF). Номер прерывания, полученный от контроллера, процессор умножает на 4 и получает, таким образом, адрес памяти, где хранится адрес начала программы обработки прерываний (вектор прерывания). Присваивание каждому из каналов IRQ своего номера процессор осуществляет на этапе инициализации контроллера.
Контроллер прерываний может выполнять следующий набор операций:
- маскирование запросов на прерывание, то есть временное запрещение реакции на них;
- установка приоритетов запросов по различным входам, то есть разрешение конфликтов при одновременном приходе нескольких запросов на прерывание;
- работа в качестве основного контролера (Master) или подчиненного ( Slave ).
Для маскирования прерываний используется внутренний регистр контроллера, программно доступный процессору как по записи, так и по чтению. Замаскирован может быть каждый запрос (по каждой из линий IRQ ), путем установки соответствующего бита маскирования в записываемом в контроллер управляющем байте.
Схема приоритетов прерываний может быть задана процессором программным путем. В базовом варианте все приоритеты фиксированы (то есть IRQ0 имеет высший приоритет, а IRQ7 — низший). Но в принципе высший уровень приоритета задается для любого из входов запросов, можно также установить циклическое переключение приоритетов (последний обслуженный запрос получает низший приоритет), обеспечивая тем самым всем запросам равные приоритеты. Если во время обработки прерывания с меньшим уровнем приоритета приходит более приоритетный запрос, то процессор переходит на программу обработки более приоритетного запроса, а после ее выполнения возвращается к программе обработки менее приоритетного запроса. Отметим, что немаскируемое прерывание NMI имеет приоритет выше любого другого аппаратного прерывания .
Завершив выполнение программы обработки прерывания, процессору необходимо с помощью специальной команды сообщить об этом контроллеру прерываний , чтобы разрешить ему дальнейшую работу, в частности, вновь обрабатывать тот же самый запрос.
Контроллер 8259 предусматривает возможность выбора способа распознавания запроса на прерывание — по фронту сигнала IRQ и по уровню этого сигнала. В архитектуре компьютера типа PC используется запрос по фронту.
При каскадировании контроллеров основному контроллеру надо указать, к какому из его входов подключен подчиненный контроллер, а подчиненному контроллеру необходимо указать, к какому входу основного контроллера подключен его выходной сигнал запроса.
Все операции начальной настройки контроллеров прерываний выполняет BIOS, и пользователю нужно прибегать к программированию этих контроллеров только при необходимости смены режимов обслуживания прерываний или при написании собственной программы обработки аппаратных прерываний .
7.4.3. Контроллер прямого доступа к памяти
Контроллер прямого доступа к памяти имеет более сложную структуру по сравнению с контроллером прерываний , что связано с его более сложными функциями. На время ПДП контроллер ПДП становится задатчиком (активным устройством) системной шины, выставляя все основные сигналы шины самостоятельно. Однако все режимы работы контроллера ПДП , все его параметры устанавливаются процессором на этапе инициализации контроллера. В частности, процессор определяет тип решаемой задачи, задает начальный адрес передаваемого или принимаемого массива данных, а также размер этого массива.
В персональном компьютере применяется два четырехканальных контроллера ПДП типа i8237, обеспечивающих 7 каналов ПДП (один канал задействован под каскадирование контроллеров по тому же принципу, что и контроллеры прерываний ). Помимо собственно контроллеров ПДП в подсистему ПДП входят также программно доступные регистр старшего байта адреса и регистры страниц ПДП .
О циклах обмена в режиме ПДП уже говорилось в разделе 2.2.3. Получив сигнал запроса ПДП по одной из линий DRQ , контроллер формирует запрос процессору на захват шины и, получив разрешение от процессора, сообщает о предоставлении ПДП запросившему прямой доступ устройству по соответствующей линии DACK . После этого производится цикл ПДП , пересылающий данные из устройства ввода/вывода в память или наоборот. При этом сам контроллер ПДП формирует только 16 младших разрядов адреса памяти, а восемь старших разрядов содержатся в регистре страниц. Свой собственный регистр страниц соответствует каждому из каналов ПДП .
Передача данных в случае ПДП возможна по одному из следующих режимов:
- Режим одиночной (поцикловой) передачи. В этом случае за время предоставления ПДП выполняется только один цикл передачи данных, и для следующей передачи надо опять же запросить ПДП . Однако адрес памяти, с которым осуществляется обмен, автоматически меняется после каждого цикла. Этот режим позволяет процессору вставлять свои циклы обмена после каждого цикла ПДП .
- Режим передачи блока (режим блочной передачи). В этом режиме за один раз передается целый блок данных определенной длины (до 64 Кбайт). Режим обеспечивает более высокую скорость передачи по сравнению с режимом одиночной передачи, но может на длительное время захватить системную шину, не допуская к ее управлению процессор.
- Режим передачи по требованию. Этот режим позволяет продолжать ПДП до тех пор, пока устройство, запросившее ПДП , не исчерпает весь объем данных.
- Каскадный режим позволяет объединять контроллеры для увеличения количества каналов ПДП .
- В принципе, возможен режим передачи в режиме ПДП из памяти в память, но в компьютере он не используется.
Как и в случае контроллера прерываний , возможны две схемы приоритетов каналов ПДП , выбираемые программно, — фиксированный и циклический. Исходная схема — фиксированные приоритеты, причем нулевой канал имеет максимальный приоритет, а седьмой — минимальный. Во время обслуживания любого запроса ПДП остальные запросы не могут вмешаться, но после завершения обслуживания данного запроса будет обслуживаться запрос с наибольшим приоритетом. Как и в случае контроллера прерываний , возможно программное маскирование каждого канала ПДП .
Перед началом работы каждому из каналов контроллера процессор должен указать режим, в котором он будет работать, базовый адрес памяти, с которого начнется обмен, количество передаваемых байтов или слов, направление записи в память или чтения из памяти (от старших адресов к младшим или наоборот). Возможен режим автоинициализации, при котором после окончания пересылки всего массива данных контроллер автоматически восстанавливает все параметры, и для этого не требуется вмешательство процессора. Предусмотрена также возможность программного запроса ПДП , обслуживаемого так же, как и аппаратный запрос.
7.4.4. Системный таймер и часы реального времени
В качестве системного таймера компьютера используется микросхема трехканального 16-разрядного таймера i8254 или ее аналог. Таймер предназначен для получения программно управляемых временных задержек и генерации сигналов заданной частоты. Таймер позволяет повысить эффективность программирования процессов управления и синхронизации внешних устройств, особенно в реальном времени.
Таймер содержит три независимых канала (0, 1 и 2), каждый из которых может быть, в принципе, запрограммирован на работу в одном из шести режимов счета:
- прерывание терминального счета;
- программируемый генератор одиночного импульса;
- генератор импульсов заданной частоты;
- генератор прямоугольных импульсов типа " меандр ";
- программно формируемый строб;
- аппаратно формируемый строб.
На каждый канал могут подаваться входные синхросигналы. Из каждого канала можно получать сигнал с частотой, равной входной частоте, деленной на произвольное 16-разрядное число. В компьютере на все входы поступают синхросигналы частотой 1,19 МГц. Все каналы таймера в компьютере имеют специальное назначение, поэтому особой свободы в выборе режима работы или переназначении функций у пользователя нет.
- Выход канала 0 связан с сигналом запроса прерывания IRQ0 и обеспечивает прерывание для счетчика реального времени (используется режим работы 3). Пользователю не рекомендуется перепрограммировать этот канал. При старте компьютера канал программируется так, чтобы выдавать импульсы примерно 18,2 раза в секунду. По этому прерыванию программно увеличивается состояние счетчика реального времени. Пользователь может читать состояние данного счетчика из специально выделенной ячейки памяти и применять его для задержек в своих программах.
- Выход канала 1 генерирует сигнал запроса регенерации динамической памяти (режим работы 2). Использование этого канала не по назначению может привести к потере содержимого оперативной памяти .
- Выход канала 2 генерирует тональный сигнал для встроенного динамика компьютера (режим работы 3). Однако разрешение этого тонального сигнала производится установкой выделенных разрядов (0 и 1) программно доступного параллельного порта контроллера периферийных устройств. Один разряд (0) разрешает работу канала, другой разряд (1) пропускает выходной сигнал на динамик.
Таким образом, пользователь компьютера может задействовать только канал 2. Чаще всего его применяют для генерации звуков заданной частоты и длительности. Кроме того, выходной сигнал данного канала программно доступен по чтению из одного из разрядов параллельного порта . Это позволяет, запрограммировав таймер соответствующим образом, выдерживать нужные временные интервалы. Для этого следует программно разрешить генерацию (при отключенном динамике), а затем программно опрашивать выходной сигнал таймера и принимать решения по изменению его уровня.
Подсистема часов реального времени в первых компьютерах выполнялась на микросхеме контроллера MC146818 фирмы Motorola. Этот контроллер содержит 64 байта СMOS-памяти, из которых первые 14 байт используются для часов реального времени, а остальные 50 байт хранят информацию о конфигурации системы.
Для входного тактового сигнала контроллера применяется специальный "часовой" кварцевый генератор с частотой 32 768 кГц, что позволяет с помощью деления частоты получить импульсы с частотой 1 Гц. Контроллер считает секунды, минуты, часы, дни недели, месяцы и годы. Причем работает он даже при отключении питания компьютера, подпитываясь от батареи или аккумулятора. Это позволяет сохранять информацию о текущем времени постоянно.
Помимо счетчика текущего времени, контроллер имеет в своем составе будильник. Будильник может формировать прерывания ( IRQ8 ) с программно заданной периодичностью. Состояния всех счетчиков (секунд, минут, часов и т.д.) программно доступны как по чтению, так и по записи, что позволяет устанавливать нужное время и следить за ним.
Аннотация: В этой лекции рассказывается о режимах пониженного энергопотребления микроконтроллера, а также о структуре и организации таких вспомогательных аппаратных средств как тактовые генераторы, схемы контроля напряжения питания, сторожевые таймеры и дополнительные модули микроконтроллера.
2. Платформы PC/AT 286, 386. Работаем с переключателями.
Во времена процессоров 80286, 80386 производители наладили выпуск
универсальных материнских плат, допускающих установку процессоров с различными
тактовыми частотами. Модельный ряд 80386DX содержал процессоры с частотами 16,
20, 25, 33, 40 MHz. Первые универсальные платы использовали панельку для
установки осциллятора (осциллятором здесь называется схема, содержащая кварцевый
резонатор и генератор, интегрированные в одном корпусе). Пользователь или
производитель платы должен был установить осциллятор, частота которого
соответствовала тактовой частоте процессора. Разумеется, системный таймер
тактировался от другого генератора.
Такой "детский конструктор" уже допускал разгон без паяльника (путем
установки осцилляторов с частотами, превышающими штатные), если конечно
осциллятор был установлен в панельке, а не запаян. Затем появились так
называемые частотные синтезаторы, способные из частоты одного задающего
генератора (обычно это классическая для платформы PC частота 14.31818 MHz)
сформировать все частоты, необходимые для работы платформы при поддержке
различных процессоров. Один из методов выполнения такого преобразования –
умножить опорную частоту на достаточно большой коэффициент, в результате
получится сигнал с частотой, из которой путем деления на целые коэффициенты
можно получить все требуемые частоты с приемлемой точностью. Данное
преобразование выполняется внутри микросхемы частотного синтезатора. Для
управления частотой выдаваемого тактового сигнала используются входы задания
частоты. Код, подаваемый на эти входы, задается переключателями (jumpers),
установленными на материнской плате. Теоретически, в таких системах уже
существовала возможность реализации программного управления тактовой частотой.
Для этого требовалось реализовать порт вывода (программно-доступный регистр),
выходы которого подключаются к входам задания частоты, вместо переключателей.
Записывая разные коды в этот порт, BIOS или другая программа может переключать
тактовую частоту. Но данное решение не стало популярным, во-первых, потому, что
такая гибкость в те времена еще не была востребована, а во-вторых, потому, что
большинство частотных синтезаторов тех времен не допускали переключение частоты
без выключения питания.
5. Современные системы. Нажми на кнопку – получишь результат.
Понятия "частота шины" и "множитель", рассмотренные выше, благополучно дожили
до наших дней, изменились только численные значения этих параметров. Современная
платформа позволяет управлять тактовой частотой процессора и множителем из BIOS
Setup. Читателю, знакомому с цифровой и микропроцессорной схемотехникой,
очевиден путь решения этой задачи: код управления частотой, подаваемый на
тактовый генератор и код управления множителем, подаваемый на процессор
формируется посредством программно-доступных регистров (портов вывода), выходы
которых подключены к соответствующим управляющим линиям. Записывая данные в эти
регистры, BIOS, либо другая программа, может устанавливать требуемые значения
частоты и множителя. Архитектура регистров, реализующих данную функцию, зависит
от модели платформы, поэтому программы, реализующие такое управление, могут быть
написаны под одну конкретную плату (как пишется BIOS), либо они должны
распознавать тип платы и содержать модули поддержки под каждую плату.
В большинстве реализаций современных платформ, тактовый генератор выполнен в
виде отдельной микросхемы, программный доступ к его регистрам обеспечивается по
2-проводной последовательной шине SMB (System Management Bus). Заметим, что та
же шина используется для считывания микросхем SPD (Serial Presence Detect)
хранящих параметры модулей оперативной памяти. Контроллер шины SMB находится в
составе "южного моста" чипсета. Детальное описание шины SMB содержится в [17].
Информацию по контроллеру шины SMB можно найти в документации на "южные мосты"
чипсетов, например [10], [19], [20]. Документация на большинство тактовых
генераторов также доступна, например [21]. Шина SMB построена на базе протокола
I2C, предложенного фирмой Philips.
Важным свойством современных платформ является автоматическое определение
тактовой частоты процессора. Для этого процессор сам формирует код управления
частотой системной шины. Этот код жестко прошит в процессоре в соответствии с
его типом (не путать с множителем). Код подается от процессора на тактовый
генератор и управляет режимом работы последнего. Процессоры семейства Intel
Socket 775 используют сигналы BSEL[0,1,2] для выбора частоты системной шины.
BSEL расшифровывается как Bus Select.
Каким же образом автоматический выбор частоты в соответствии с типом
процессора и управление частотой из BIOS Setup существуют совместно?
Итак, мы включили питание, тактовый генератор принял от процессора код
управления частотой по линиям BSEL[2,1,0] и автоматически запустился на частоте,
соответствующей установленному процессору. Процессор начал выполнение стартовой
процедуры BIOS POST на штатной частоте. Затем, BIOS на одном из этапов
выполнения процедуры POST, интерпретирует содержимое памяти CMOS, в которой
хранится информация о состоянии опций Setup. Если в Setup установлена частота,
отличающаяся от штатной, BIOS перепрограммирует тактовый генератор, и он
запустится на новой частоте. Физически, это сводится к выполнению транзакций на
шине SMB, записывающих данные в регистры тактового генератора.
Именно так приводятся в исполнение установки BIOS Setup. Прежде чем выполнить
перенастройку тактового генератора, чипсета и других устройств в соответствии с
установками опций, BIOS проверяет контрольную сумму информации CMOS, а также
бит, индицирующий факт потери батарейного питания. Если выясняется, что
информация в CMOS недостоверна, перепрограммирования частоты не происходит,
процессор продолжает работать на штатной частоте. На этом основано действие
перемычки Clear CMOS, которая позволяет сбросить настройки Setup и запуститься в
штатном режиме, если плата не стартует после чрезмерного разгона.
1. Платформы PC/XT. Разгоняем с помощью паяльника.
Тактовый генератор в IBM PC/XT реализован на микросхеме Intel 8284, советский
аналог – КР1810ГФ84, описан в [26].
Задающий генератор использует кварцевый резонатор частотой 14.31818 MHz.
Тактовая частота процессора формируется путем деления на 3 частоты задающего
генератора: 14.31818 MHz / 3 = 4.773 MHz. Тактовый сигнал для системного таймера
формируется путем деления на 12 частоты задающего генератора: 14.31818 MHz / 12
= 1.193 MHz. Заменив кварцевый резонатор 14.318 MHz на 24.0 MHz, мы получим
тактовую частоту процессора в режиме "турбо" 24.0 MHz / 3 = 8.0 MHz.
Работоспособность системы на новой тактовой частоте будет зависеть от
величины технологического запаса быстродействия у процессора, подсистем памяти и
ввода-вывода. Отдельного внимания требует системный таймер. Напомним, что он
используется программным обеспечением для формирования интервалов времени,
продолжительность которых не зависит от быстродействия процессора, поэтому
повышение частоты тактирования таймера приведет к нежелательным последствиям:
будут спешить часы DOS Time, частоты звуковых сигналов, выводимых на PC Speaker,
будут завышены. Чтобы избежать таких последствий, система IBM PC/XT,
поддерживающая режим "турбо" должна содержать два тактовых генератора: для
процессора и для таймера. Вместе с тем, существовали некорректно написанные
программы, которые для формирования времязадающих функций использовали не
таймер, а процессор, рассчитывая на то, что тактовая частота всегда равна 4.773
MHz. Для обеспечения совместимости с такими программами, была введена кнопка
"Turbo", позволяющая переключаться между стандартной и повышенной частотой.
Заметим, что понятия "множитель" тогда не существовало, частоты тактирования
ядра процессора и шины всегда были равны. Следовательно, разгон процессора мог
быть выполнен только путем повышения частоты шины.
4.7. Минимизация энергопотребления в системах на основе МК
Малый уровень энергопотребления является зачастую определяющим фактором при выборе способа реализации цифровой управляющей системы . Современные МК предоставляют пользователю большие возможности в плане экономии энергопотребления и имеют, как правило, следующие основные режимы работы:
- активный режим (Run mode) — основной режим работы МК. В этом режиме МК исполняет рабочую программу, и все его ресурсы доступны. Потребляемая мощность имеет максимальное значение PRUN. Большинство современных МК выполнено по КМОП-технологии, поэтому мощность потребления в активном режиме сильно зависит от тактовой частоты;
- режим ожидания (Wait mode, Idle mode или Halt mode). В этом режиме прекращает работу центральный процессор, но продолжают функционировать периферийные модули, которые контролируют состояние объекта управления. При необходимости сигналы от периферийных модулей переводят МК в активный режим, и рабочая программа формирует необходимые управляющие воздействия. Перевод МК из режима ожидания в рабочий режим осуществляется по прерываниям от внешних источников или периферийных модулей, либо при сбросе МК. В режиме ожидания мощность потребления МК PWAIT снижается по сравнению с активным режимом в 5…10 раз;
- режим останова (Stop mode, Sleep mode или Power Down mode). В этом режиме прекращает работу как центральный процессор, так и большинство периферийных модулей. Переход МК из состояния останова в рабочий режим возможен, как правило, только по прерываниям от внешних источников или после подачи сигнала сброса. В режиме останова мощность потребления МК PSTOP снижается по сравнению с активным режимом примерно на три порядка и составляет единицы микроватт.
Два последних режима называют режимами пониженного энергопотребления . Минимизация энергопотребления системы на МК достигается за счет оптимизации мощности потребления МК в активном режиме, а также использования режимов пониженного энергопотребления . При этом необходимо иметь в виду, что режимы ожидания и останова существенно отличаются временем перехода из режима пониженного энергопотребления в активный режим. Выход из режима ожидания обычно происходит в течение 3…5 периодов синхронизации МК, в то время как задержка выхода из режима останова составляет несколько тысяч периодов синхронизации. Кроме снижения динамики работы системы значительное время перехода в активный режим является причиной дополнительного расхода энергии.
Мощность потребления МК в активном режиме является одной из важнейших характеристик контроллера. Она в значительной степени зависит от напряжения питания МК и частоты тактирования.
В зависимости от диапазона питающих напряжений все МК можно разделить на три основные группы:
- МК с напряжением питания 5,0 В±10%. Эти МК предназначены, как правило, для работы в составе устройств с питанием от промышленной или бытовой сети, имеют развитые функциональные возможности и высокий уровень энергопотребления .
- МК с расширенным диапазоном напряжений питания: от 2,0…3,0 В до 5,0-7,0 В. МК данной группы могут работать в составе устройств как с сетевым, так и с автономным питанием.
- МК с пониженным напряжением питания: от 1,8 до 3 В. Эти МК предназначены для работы в устройствах с автономным питанием и обеспечивают экономный расход энергии элементов питания.
Зависимость тока потребления от напряжения питания МК почти прямо пропорциональная. Поэтому снижение напряжения питания весьма существенно понижает мощность потребления МК. Необходимо, однако, иметь в виду, что для многих типов МК с понижением напряжения питания уменьшается максимально допустимая частота тактирования, то есть выигрыш в потребляемой мощности сопровождается снижением производительности системы.
Большинство современных МК выполнено по технологии КМОП, поэтому мощность потребления в активном режиме PRUN практически прямо пропорциональна тактовой частоте. Поэтому, выбирая частоту тактового генератора , не следует стремиться к предельно высокому быстродействию МК в задачах, которые этого не требуют. Часто определяющим фактором оказывается разрешающая способность измерителей или формирователей временных интервалов на основе таймера или скорость передачи данных по последовательному каналу.
В большинстве современных МК используется статическая КМОП-технология, поэтому они способны работать при сколь угодно низких тактовых частотах вплоть до нулевых. В справочных данных при этом указывается, что минимальная частота тактирования равна dc ( direct current ). Это означает, что возможно использование МК в пошаговом режиме, например, для отладки. Мощность потребления МК при низких частотах тактирования обычно отражает значение тока потребления при fOSC = 32768 Гц (часовой кварцевый резонатор).
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 для адресации стека.
Отметим, что проверить наличие на плате заданного тактового генератора мы не
можем, так как генераторы не поддерживают универсального механизма
детектирования. То есть на плате с требуемым "южным мостом" но другим
генератором программа может приступить к программированию генератора и
отработать некорректно, так как генератор другой. Один из путей решения проблемы
– добавление процедуры идентификации модели платы по информации из BIOS.
7) Программируем конфигурационные регистры устройства Power Management Unit для
обеспечения доступа к регистрам контроллера SMB через диапазон в пространстве
ввода-вывода. Сохраняем базовый адрес этого диапазона для последующего
использования. Подробности в [19].
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 из документа на "южный мост" чипсета.
13) Измеряем тактовую частоту процессора, используя системный таймер. Измеряется
частота ядра процессора (умноженная процессором).
14) Выводим результат измерения на экран. Это частота после перенастройки
генератора.
15) Восстанавливаем состояние конфигурационных регистров контроллера SMB,
модифицированных в ходе работы программы. Подробности в [19].
Книги
22) В.Л. Григорьев. Микропроцессор i486. Архитектура и программирование.
Москва ТОО "ГРАНАЛ" 1993.
23) В.Г. Артюхов, А.А. Будняк. В.Ю. Лапий. С.М. Молявко, А.И. Петренко.
Проектирование микропроцессорной электронно-вычислительной аппаратуры.
Справочник. Киев "Тэхника" 1988.
24) К. Г. Самофалов, О.В. Викторов. Микропроцессоры. Библиотека инженера. Киев
"Тэхника" 1989.
25) 2B ProGroup: В.А. Вегнер, А.Ю. Крутяков, В.В. Серегин, В.А. Сидоров, А.В.
Спесивцев. Аппаратура персональных компьютеров и ее программирование. IBM
PC/XT/AT и PS/2. Москва "Радио и связь" 1995.
26) Ю.М. Казаринов, В.Н. Номоконов, Г.С. Подклетнов, Ф.В. Филиппов.
Микропроцессорный комплект К1810. Структура, программирование, применение.
Справочная книга. Москва "Высшая школа" 1990.
Сегодня даже рядовой пользователь может попытаться повысить
производительность своего компьютера, изменяя состояние опций BIOS Setup. А было
время, когда для выполнения подобной операции требовались паяльник, осциллограф
и серьезные познания в области цифровой схемотехники. Для современных
оверклокеров акцент сместился от схемотехники к термодинамике, так как
устойчивость работы электронных схем на частотах, превышающих штатные,
существенно зависит от эффективности их охлаждения.
Все эти результаты эволюции платформы PC, безусловно, хороши и логичны.
Недостаток только в том, что возможности для удовлетворения любопытства и
исследовательского интереса существенно уменьшились, так как в домашних условиях
"залезть" внутрь микросхем чипсета и тем более что-то там модифицировать, к
сожалению, невозможно.
Мы в очередной раз убеждаемся в том, что ищущий "изюминку" не обрадуется
килограмму изюма, а счастье есть состояние несовместимое с фундаментальными
свойствами пространства и времени. Так как пути устранения указанного
противоречия автору неизвестны, перейдем непосредственно к предметной области.
Чтобы разобраться в работе тактового генератора и схемотехнических аспектах
разгона, рассмотрим эволюцию подсистемы тактирования от "древней" IBM PC/XT до
сегодняшних платформ. В практической части статьи приведен пример, позволяющий
на уровне принципиальной электрической схемы и ассемблера посмотреть на
процессы, происходящие при переключении тактовой частоты в BIOS Setup.
4. Платформы Intel Pentium, AMD K5, K6. Гибкость заставляет задуматься.
Умножение частоты и возможность выбора множителя появились еще во времена
процессоров 486. Следующее поколение процессоров - Intel Pentium и AMD K5/K6,
использующее процессорный разъем Socket 7, базируется на той же идеологии
тактирования, но набор частот и множителей был существенно расширен. Перед
оверклокерами встает задача выбора оптимального (с точки зрения
производительности) режима работы процессора. Хотя численные значения частот и
множителей сегодня совсем другие, приведенный ниже принцип рассуждений применим
и для современных систем.
Дано: Тактовый генератор на плате поддерживает частоты шины 50, 55, 60, 66.6
MHz. Процессор поддерживает множители 1.5x и 2 x. Предел устойчивой работы
нашего процессора 120 MHz.
Найти: Оптимальный (с точки зрения производительности) режим работы
процессора.
Очевидно, у нас два варианта: 66.6 x 1.5 = 100 MHz или 60 x 2 = 120 MHz. В
нашем случае, мы не можем использовать 66.6 x 2 = 133.3 MHz, так как заявленный
порог устойчивости процессора 120 MHz. В первом варианте шина работает быстрее,
но ниже частота ядра, во втором варианте – наоборот. Сразу признаемся, что на
прямой вопрос "что лучше" однозначного ответа не существует, и вот почему.
Представим себе компактный фрагмент машинного кода, долго работающий с
компактным блоком данных, код и данные помещаются во внутренний кэш процессора.
Очевидно, что вскоре после начала выполнения, код и данные будут автоматически
скопированы процессором из ОЗУ во внутренний кэш и для доступа к ним не
потребуется обращений по системной шине. От этого момента и до завершения
выполнения нашего фрагмента процессор будет работать с производительностью,
зависящей от частоты ядра и не зависящей от частоты шины.
Теперь представим другую ситуацию – процессор копирует в памяти блок данных,
размером десятки мегабайт. Очевидно, в этом случае, процессор существенную часть
времени будет занят операциями на шине (чтение из блока-источника, запись в
блок-получатель), поэтому производительность здесь существенно зависит от
частоты шины, если, конечно эффект от быстрой шины не нивелирован медленной
оперативной памятью.
Мы рассмотрели два диаметрально противоположных примера. Ситуации,
встречающееся в программном обеспечении на практике, находятся "посередине". Но
тем не менее, на скорость работы одних программ больше влияет частота шины,
других – частота ядра. Даже в пределах одного приложения могут встречаться
фрагменты, как первого, так и второго типа. Поэтому, углубляясь в теоретические
рассуждения, не следует забывать и о методе "научного тыка".
Источники информации
17) System Management Bus (SMBus) Specification. Version 2.0.
18) PCI BIOS Specification. Revision 2.1.
(Информация на данном сайте более полная, чем на "родных" сайтах
производителей указанных микросхем.)
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".
Читайте также: