Функции управления производительностью и энергопотреблением процессоров Intel Pentium 4 и Intel Xeon ? разные названия, единая основа


Есть ли жизнь на Марсе,
нет ли жизни на Марсе —
науке это неизвестно…

Что-то давно мы не уделяли внимания исследованию «тепловых» технологий современных процессоров. Последняя статья на эту тему — Исследуем функционирование механизма Thermal Throttling в процессорах Pentium 4 с ядрами Northwood и Prescott — насчитывает уже более 8 месяцев. Вместе с тем, энергосберегающие технологии процессоров в последнее время приобретают все большую и большую актуальность и популярность — не меньшую, чем дальнейшее наращивание производительности. Функции управления энергопотреблением процессоров можно четко разделить на две категории — функции защиты процессора от перегрева при возникновении внештатной ситуации и функции снижения рассеиваемой процессором тепловой мощности в штатном режиме — при нахождении процессора в режиме простоя. В котором он, что далеко не секрет, проводит большую часть своего времени, как в современных пользовательских персональных компьютерах, так и в серверах. Подтверждением последнего факта является сравнительно недавнее представление Intel новой технологии Enhanced SpeedStep для серверных процессоров Xeon. Рассмотрению важнейших технологий управления производительностью и энергопотреблением, реализованных в процессорах семейства Intel Pentium 4 (а также краткому сравнению их с другими технологиями подобного рода) и посвящена настоящая статья.

Конфигурация тестовых стендов

Стенд №1

  • Процессор: Intel Pentium 4 3.4 ГГц (ядро Prescott)
  • Чипсет: Intel 865PE
  • Материнская плата: Gigabyte GA-8IPE1000 Pro2
  • Память: 2x256 МБ KingMax DDR-433
  • Видео: ATI Radeon 9800 Pro
  • HDD: WD Raptor WD360, SATA, 10000 rpm, 36Gb

Стенд №2

  • Процессор: Intel Xeon 3.4 ГГц (ядро Nocona)
  • Чипсет: Intel E7525
  • Материнская плата: Supermicro X6DA8-G
  • Видео: Leadtek PX350 TDH, NVIDIA PCX5900
  • HDD: WD Raptor WD360, SATA, 10000 rpm, 36Gb

Программное обеспечение

Методология тестирования

В нижеприведенном тексте достаточно часто будут встречаться понятия подлинной частоты процессора (Actual CPU Clock), загрузки процессора (CPU Load), а также частоты процессора в режиме троттлинга, именуемой для краткости просто «частотой троттлинга» (Throttled CPU Clock). Хотя некоторые из них могут показаться достаточно очевидными, нам все же следует подробнее остановиться на идеологических основах и методах измерения каждого из этих параметров.

Итак, под подлинной частотой процессора будем понимать полное количество тактов, поданных ядру процессора по его внутренней шине тактовым генератором за единицу времени (чтобы получить стандартное выражение частоты в Герцах, в качестве последней следует выбрать 1 секунду). Фактически, подлинная частота процессора — это просто частота тактирующего сигнала, выдаваемого тактовым генератором, которое находит вполне реальное отражение в счетчике тактов процессора (Time Stamp Counter, TSC), содержимое которого можно прочитать в любой момент времени с помощью инструкции RDTSC из набора IA-32 (x86). Соответственно, разница между двумя показаниями TSC за определенный промежуток времени, поделенная на его длительность, и даст нам подлинную частоту процессора. Именно на этом, можно сказать, стандартном методе основано измерение частоты процессора в реальном времени в большинстве утилит, предоставляющих информацию о процессоре (CPU-Z, WCPUID, а также утилит проекта RightMark — RMMA, RMSpy и RMClock).

Под загрузкой процессора вполне естественно понимать количество «полезных» тактов процессора, поделенных на общее количество тактов, исполненных за единицу времени. Это может показаться достаточно тривиальным, однако измерение загрузки процессора как таковое — далеко не тривиальная задача. Прежде всего отметим, что загрузка процессора — величина не дифференциальная, а интегральная. Проще говоря, ее нельзя измерить за бесконечно малый промежуток времени (на самом деле, можно, даже с точностью до такта, но эта величина не будет иметь глубокого смысла, ибо она будет равна либо нулю — в случае «бесполезного», «холостого» такта, либо единице (100%) — в случае «полезного» такта). Поэтому осмысленным является измерение величины загрузки процессора за сравнительно большой промежуток времени — например, 100 мс (а то и 1 секунду), причем чем больше промежуток, тем выше точность измерения, но тем меньше время отклика сигнала — т.е., при слишком большом интервале интегрирования будут получаться слишком плавные кривые, на которых будет невозможно уловить резкие изменения загрузки процессора. Разумеется, необходимая точность измерения диктуется требованиями поставленной задачи — практика показывает, что для измерений на качественном уровне вполне подходит односекундный интервал измерения.

Следует упомянуть несколько слов и о самом измерении загрузки процессора. Конечно, можно полагаться на показания операционной системы — как и поступают разработчики большинства ПО системно-прикладного характера. Существенный недостаток этого метода — сравнительно низкая точность измерений (разрешение системного счетчика — не более 15 мс, т.е., к примеру, за 100-мс интервал может быть получено не более 6-7 отсчетов, а значит, точность измерений составит не более 15-16%). Но еще более существенна некоторая условность получаемой величины — прежде всего, относительно реального устройства — центрального процессора (ибо что и как меряет операционная система — известно только ее разработчику). В нашей новой утилите RMClock, которую мы сегодня будем использовать в качестве главного инструмента наших исследований, впервые применен принципиально иной метод, основанный на использовании показаний (счетчиков) самого процессора — что придает измеряемой величине вполне осязаемый, как принято говорить в науке, физический смысл.

Возвращаясь к тому, с чего мы начинали, под «полезными» тактами будем понимать те такты, которые были потрачены физическим центральным процессором (мы подчеркиваем этот момент, учитывая, что процессоры Pentium 4 ныне оснащены технологией Hyper-Threading, позволяющей представлять один физический процессор как два логических — так вот, нас интересуют именно показания реального устройства, как целого) на выполнение кода пользовательских приложений (user mode) и операционной системы (kernel и user mode). Все остальные такты процессора будем считать «бесполезными», или «холостыми» — на время исполнения этих тактов процессор помещается операционной системой в спящий режим (выполняет инструкции HLT). При этом вполне очевидно, что сумма «полезных» и «холостых» тактов должна равняться общему количеству тактов, поэтому величина загрузки может принимать значения от 0% до 100% включительно.

Нам осталось рассмотреть последнюю, наиболее трудную для понимания величину — частоту процессора в режиме троттлинга (частоту троттлинга). Она является эксклюзивной «фичей» нашей новой утилиты RMClock — насколько нам известно, подобную величину на настоящий момент не умеет измерять ни одно альтернативное ПО из разряда SysInfo. Для ее понимания нам следует забежать немного вперед и вкратце упомянуть, что же такое троттлинг процессора на самом деле. Оказывается, что его принцип весьма прост, и заключается он в модуляции тактовой частоты процессора. Что это такое? — да просто часть полного количества тактов процессора в принудительном порядке становится «холостой». Мы не зря расположили это понятие на третьем месте — ибо оно тесно связано с первыми двумя понятиями, рассмотренными выше.


Модуляция тактовой частоты процессора. Пример модуляции с 25% циклом активности процессора. (Источник — IA-32 Intel(R) Architecture Software Developer’s Manual, Volume 3: System Programming Guide)

Модуляция тактовой частоты имеет одно очень важное следствие — при срабатывании этого механизма загрузка процессора может становиться… меньше 100% даже при его полной «занятости». Поскольку в режиме троттлинга часть тактов в приказном порядке становится «холостой», процессор уже не может потратить все 100% своих тактов на выполнение пользовательского кода, в связи с чем его фактическая загрузка будет непременно ниже. Разумеется, падение реальной загрузки процессора по мере увеличения модуляции тактовой частоты не покажет ни операционная система, ни ПО, основанное на использовании методов операционной системы. Именно поэтому мы упомянули выше об условности показаний загрузки процессора в ОС.

Учитывая вышесказанное, частота троттлинга в утилите RMClock определяется следующим образом — в течение сравнительно малого промежутка времени (для минимизации влияния на общую загрузку процессора) на процессор подается 100% нагрузка, замеряется количество исполненных им «полезных» и общих тактов. Их отношение является степенью (или уровнем) троттлинга, умножением которой на подлинную частоту можно получить требуемую нам величину — частоту процессора в режиме троттлинга. Очевидно, что последняя может находиться в интервале от 0 (чисто теоретически) до подлинной частоты процессора, но не может быть выше нее. Технологии управления производительностью и энергопотреблением

Что ж, на этом достаточно подробном объяснении нам следует закончить с методологической частью и перейти к наиболее интересному — рассмотрению поведения технологий управления производительностью и энергопотреблением процессоров семейства Intel Pentium 4 и Intel Xeon. В качестве таковых в настоящий момент в процессорах Intel реализованы следующие:

  • Детектор аварийного перегрева (catastrophic shutdown detector);
  • Механизм автоматического термального мониторинга (automatic thermal monitoring mechanism) — Thermal Monitor 1 и Thermal Monitor 2;
  • Модуляция тактовой частоты по запросу (software controlled on-demand clock modulation);
  • Технология Enhanced Intel(R) SpeedStep.

Рассмотрим подробнее каждую из этих функций. Детектор аварийного перегрева

Наиболее простой, полностью автоматический (т.е. нет никакой возможности контролировать его поведение, кроме того, нет какого-либо способа обнаружить его присутствие в процессоре) механизм, впервые появившийся в процессорах семейства P6 и реализованный также в процессорах Pentium 4, Xeon и Pentium M. Смысл его предельно простой — по достижению определенного температурного порога (устанавливаемого при изготовлении процессора) процессор просто приостанавливает свое исполнение до поступления сигнала RESET# (так утверждается в документации производителя). Практика показывает, что на самом деле (при температуре порядка 100°C) в системах с процессорами Pentium 4 и Xeon происходит полное отключение электропитания (до подачи сигнала PWRGOOD :), т.е. включения электропитания). Механизм автоматического термального мониторинга №1

Thermal Monitor 1 (TM1) — тот самый механизм, который получил распространенное название «троттлинг» (Throttling, или Thermal Throttling, а также Thermal Trip), знакомое, пожалуй, каждому, кто имеет представление о процессоре Pentium 4 с ядром Prescott и зачастую несущее весьма негативный оттенок.

Механизм автоматического термального мониторинга №1 реализован в процессорах Pentium 4, Xeon и Pentium M и представляет собой сочетание второго температурного сенсора (первый служит механизму аварийного отключения), также калибруемого на этапе изготовления процессора с учетом его рекомендуемого температурного интервала функционирования, и механизма модуляции тактовой частоты (цикла полезного действия) процессора (который мы уже упоминали выше). В отличие от детектора аварийного перегрева, механизм TM1 является как определяемым (с помощью инструкции CPUID), так и контролируемым (с помощью модель-специфичного регистра процессора IA32_MISC_ENABLE). Согласно рекомендациям Intel, механизм TM1 должен включаться в BIOS при инициализации процессора и не изменяться впоследствии (операционной системой).

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

Весьма интересно проверить это на практике — для этого берем процессор Pentium 4 с ядром Prescott (стенд №1) и запускаем утилиту RMClock.



Данный процессор поддерживает технологии TM1 и модуляции тактовой частоты по запросу (ODCM), причем первая из них на момент запуска программы включена, вторая — отключена. Загрузка процессора минимальна, его температурные условия в норме, в связи с чем частота троттлинга совпадает с подлинной частотой процессора.

Подаем 100% нагрузку (для этой цели используем простое двухпоточное приложение, исполняющее FPU-инструкции). Температура процессорной зоны (по показаниям SpeedFan) по выходу на стационарный режим достигает 66°C. С помощью утилиты SpeedFan останавливаем вентилятор процессорного кулера и наблюдаем за поведением процессора.

Уже через 15 секунд теста температура процессора достигает 70°C, в связи с чем срабатывает механизм TM1 (именно такой порог срабатывания троттлинга мы уже наблюдали ранее). Через 1 минуту интенсивность троттлинга достигает своего максимума — весьма загадочную величину в 46% полезных тактов (duty cycle). Падение загрузки процессора (как усредненной величины, измеряемой с секундным интервалом) весьма плавное, тогда как на кривой частоты троттлинга заметны довольно резкие скачки. Последнее обстоятельство (с учетом того, что частота тротлинга оценивается по сравнительно малому интервалу, а почему это так, описано в методологической части) означает, что модуляция частоты в режиме троттлинга (т.е. при активности механизма TM1) происходит достаточно хаотично. Она останавливается на той же отметке ~46% от подлинной частоты (в нашем примере — 1555 МГц). Температура процессора в этой точке достигает порядка 80°C, однако какой-либо прямой зависимости интенсивности троттлинга от температуры, естественно, нет. Почему — уже было сказано выше: задачей TM1 является поддержание температуры процессора в допустимых пределах (в идеале — меньше 70°C) «любой ценой». В нашем эксперименте процессор был доведен до полного троттлинга нагревом до 80°C, тогда как в другом эксперименте (например, если не останавливать кулер, а лишь снизить его обороты) полный троттлинг можно получить уже при совершенно другой температуре (но не ниже 70°C).

Что ж, довольно мучить процессор — включаем кулер на полные обороты.

Полное восстановление наблюдается примерно через 2.5 минуты — температура падает до 70°C, загрузка процессора восстанавливается до положенных 100%, а частота троттлинга постепенно достигает подлинную частоту процессора (вновь с характерными скачками на соответствующей кривой).

Посмотрим теперь, как ведет себя в подобной ситуации процессор Intel Xeon Nocona (стенд №2).



Запускаем RMClock в штатном режиме функционирования процессора. Последний, по всей видимости, оказался инженерным сэмплом, т.к. неправильно определился программой как Pentium 4 (Prescott) за счет отсутствия надлежащего значения Brand ID в данных CPUID (а другого прямого способа отличить Nocona от Prescott, в общем-то, не существует). Но гораздо более интересен набор поддерживаемых им «термальных фич» — в нем присутствуют не только TM1 и ODCM (которые есть и в Prescott), но также TM2 и новая технология Enhanced SpeedStep (серверный вариант, как мы увидим ниже, отличный от его реализации в мобильных процессорах Pentium M). На момент запуска программы включены технологии TM1 и Enhanced SpeedStep (последний включается самой утилитой RMClock, а его функциональность будет рассмотрена ниже).

Подаем 100% нагрузку, после чего (по прошествию некоторого количества времени) отключаем питание вентилятора кулера (утилита SpeedFan на данной платформе не запустилась, в связи с чем мониторинг температуры и управление скоростью вращения вентилятора были невозможны). Начало троттлинга наблюдается лишь после 1 минуты и 40 секунд работы системы без активного охлаждения, в виде плавного снижения фактической загрузки процессора. Она достигает своего минимума спустя еще 2.5 минуты, причем минимум оказывается таким же, как и на Prescott — те же 46% (к сожалению, в момент снятия скриншота загрузка процессора немного подскочила). На кривой частоты троттлинга вновь заметны довольно резкие скачки, а это означает, что механизм TM1 реализован в Nocona так же, как и в Prescott (что вполне естественно, учитывая, что первый является серверным вариантом второго, с минимальными изменениями).

Возобновляем активное охлаждение системы. Полное восстановление производительности наблюдается весьма быстро — всего за 40 секунд (что ни в коем случае не является характеристикой процессора, а зависит лишь от свойств используемой системы охлаждения). Механизм автоматического термального мониторинга №2

Thermal Monitor 2 (TM2) — более совершенный механизм защиты процессора от перегрева, реализованный в процессорах Pentium M, а также, как утверждает Intel, в новых моделях Pentium 4 (тем не менее, его наличие в настоящее время можно увидеть только в серверном варианте — Xeon Nocona). Существенным отличием нового механизма является то, что TM2 (как утверждает производитель) способен управлять частотой (точнее, FID — множителем частоты системной шины) и питающим напряжением (VID) процессора, тогда как TM1 осуществляет модуляцию тактовой частоты процессора. За счет снижения питающего напряжения, TM2 позволяет сохранить большую производительность процессора в ситуации перегрева при одинаковом снижении уровня потребляемой им электроэнергии. Определить присутствие TM2 можно с помощью инструкции CPUID, а управлять его поведением — с помощью MSR (IA32_MISC_ENABLE и MSR_THERM2_CTL), причем следует отметить, что реализация TM2 в процессорах Pentium M и Pentium 4 (Xeon) несколько отличается. Существенными параметрами TM2 являются целевые (target) значения FID и VID, к которым процессор должен осуществить переход в случае перегрева (последний индицируется тем же датчиком, который используется в механизме TM1).

Ответственность за использование TM2 возлагается на BIOS. Включение механизма TM2 рекомендовано для процессоров с частотой не менее 2.8 ГГц (166-МГц шина) и не менее 3.6 ГГц (с 200-МГц шиной), тогда как для младших моделей рекомендуется использовать TM1. Одновременное включение или выключение TM1 и TM2 является внештатным режимом работы процессора, в связи с чем не рекомендуется производителем. Установка целевых значений FID и VID должна происходить BIOS на этапе инициализации процессора. Типичным целевым значением FID является минимально возможное (14x), а рекомендованным значением VID — 1.275 В.

Самое время протестировать механизм TM2 на процессоре Xeon Nocona (а больше пока и не на чем). Поскольку BIOS не позволяет нам устанавливать режим термального мониторинга по желанию, запускаем утилиту CPUMSR (в дальнейшем мы обязательно добавим специфические настройки процессора как дополнительную возможность в RMClock), выключаем TM1 и включаем TM2. Установки целевых значений FID и VID оставляем без изменений (учитывая, к тому же, что таблица значений VID в CPUMSR попросту неверна). После чего запускаем RMClock.



Изменения вступили в силу — процессор использует TM2 вместо TM1. Что касается настроек целевых значений частоты и напряжения — легко заметить (по индикаторам Minimal FID/VID), что BIOS выставила их как 14x и 1.388V (оставила штатное напряжение процессора), что означает, что процессор не будет изменять свое питающее напряжение при переходе в режим TM2. Для наших целей это неважно — подлинное энергопотребление процессора мы все равно оценить не в состоянии. Итак, 100% нагрузка уже подана на процессор, поэтому… останавливаем вентилятор кулера.

И что же мы наблюдаем? Фактическая частота процессора (частота тактирования TSC) остается… без изменений! Зато налицо падение загрузки процессора и частоты троттлинга — с такими же характерными скачками на кривой. Троттлинг начинается после 1 минуты 30 секунд тестирования, и заканчивается на второй минуте с 82% загрузкой и частотой троттлинга 2800 МГц ровно, т.е. конечное состояние, обозначаемое «множителем» 14x (этот термин, наверное, можно писать в кавычках) можно считать достигнутым. Но повторим, что есть одна важная оговорка: снизилась не подлинная частота процессора, а лишь некая эффективная частота, которую мы именуем «частотой троттлинга». Что же это означает? Может быть, процессор и способен снижать свою тактовую частоту (как уверяет нас документация Intel), но сделано это так хитро, что мы этого просто не видим. А может быть и нет — науке это неизвестно :). Поскольку производитель процессоров не предоставляет официальную методику «правильного» измерения частоты процессоров Pentium 4 / Xeon с учетом реализованных в них технологий управления производительностью и энергопотреблением, пока нам ничего не остается делать, кроме как предположить, что TM2 — это та же самая… модуляция тактовой частоты процессора. Правда, с одним важным отличием (от TM1): в режиме TM2 одновременно с модуляцией частоты процессор может снижать свое питающее напряжение.

Включаем кулер. Картина достаточно очевидная и не нуждается в пояснениях. Технология Enhanced SpeedStep

А теперь перейдем к самому «вкусному», так сказать, «изюминке» новых процессоров Intel Xeon с ядром Nocona — введенной в них технологии Enhanced SpeedStep для серверов (кодовое название — DBS, Demand-Based Switching, т.е. «переключение по запросу»), которая была наглядно продемонстрирована на Российском Форуме Intel для разработчиков — 2004.

Изначально технология Enhanced SpeedStep появилась в процессорах Pentium M на смену технологии Intel SpeedStep (встречающейся в мобильных процессорах Pentium III и Pentium 4) для более эффективного управления энергопотреблением процессора посредством динамического изменения дискретных состояний производительности процессора (P-state transitions, каждое P-state задается комбинацией значений FID и VID). Усовершенствование технологии SpeedStep проявилось в виде централизации контрольного механизма (его интеграции в ядро процессора) и программного интерфейса (в виде модель-специфичных регистров). Присутствие технологии Enhanced SpeedStep идентифицируется соответствующим флагом CPUID, а управление ее поведением — с помощью MSR процессора (IA32_MISC_ENABLE, MSR_PERF_STATUS и MSR_PERF_CTL).

Технология Enhanced SpeedStep в серверных процессорах Xeon на качественном уровне (т.е. с точки зрения описания) выглядит так же, тогда как ее реализация может весьма и весьма отличаться. Что ж, почему бы нам не изучить поведение этой новой технологии? Для этого восстанавливаем штатный режим процессора (включаем TM1, как говорится, для порядка), запускаем RMClock, выставляем в нем минимальный уровень производительности/энергопотребления процессора (P-state profile: Minimal). Для наглядности подаем 100% нагрузку на процессор. И смотрим на результат…




Вы ожидали увидеть что-нибудь другое? Мы — уже нет. Комментарии почти излишни, однако все же сделаем их: подлинная (фактическая) частота процессора остается без изменений, загрузка процессора и частота троттлинга снижаются до уровня 82% и 2800 МГц, соответственно. А это значит, что технология Enhanced SpeedStep для серверов (на наш взгляд) — всего лишь очередная эксплуатация механизма модуляции тактовой частоты процессора. Причем в данном случае она намного ближе по реализации к TM2, поскольку также умеет изменять напряжение питания процессора. Только срабатывает она не при перегреве, а «по запросу».



Просто так, можно сказать — для очистки совести, мы попробовали выставить другие значения «множителя» процессора — последовательно увеличив его с 14x до номинального значения 17x. Результат вполне очевидный, изменение частоты троттлинга наблюдается как при полной загрузке процессора, так и в режиме простоя.

Остановимся несколько подробнее на изменении питающего напряжения процессора, как гораздо более важной компоненте технологии Enhanced SpeedStep (а также TM2). Включить ее не так просто — если BIOS не настраивает процессор надлежащим (рекомендованным производителем) образом, требуются некоторые шаманства с бубном. Вновь воспользуемся утилитой CPUMSR. Итак, сначала включаем TM2 вместо TM1. После чего меняем значения FID/VID для TM2 target. Минимальное напряжение пришлось выставлять «на ощупь» (как мы говорили выше, таблица значений VID в CPUMSR неверна).



Результат налицо — мы добились желаемого эффекта. По второму скриншоту видно, что далее можно поменять TM2 назад на TM1 — процессор продолжает вести себя корректно. В заключение следует отметить, что мы не имели возможности оценить реальное изменение напряжения питания процессора (по причине отсутствия ПО системного мониторинга для данного чипсета/материнской платы), поэтому мы воспользовались довольно грубым методом — выставили минимальное напряжение 1.000 В. Система моментально ушла в перезагрузку — а значит, напряжение на ядре процессора действительно поменялось (до недопустимо низкого значения). Модуляция тактовой частоты по запросу (ODCM)

Мы не зря оставили эту технологию напоследок — как мы показали выше, именно на ней (по крайней мере, на заложенном в ее основе принципе) основаны все остальные технологии управления производительностью/энергопотреблением процессоров Pentium 4 и Xeon. Присутствие технологии программной модуляции тактовой частоты процессора по запросу индицируется флагом ACPI в CPUID, а управление ее поведением — посредством MSR процессора IA32_CLOCK_MODULATION.

Основные параметры, управляющие поведением этой технологии — ее включение/выключение и выставление заданного минимального уровня цикла полезного действия процессора (от 12.5% до 87.5% с шагом в 12.5%, имеется также некое зарезервированное значение).

Для изучения функции программной модуляции в очередной раз воспользуемся утилитой CPUMSR. Для начала возьмем процессор Xeon Nocona (на котором результат получился более показательным) и выставим максимальный уровень модуляции — с 12.5% циклом активности.



Результат весьма интересный — в режиме почти полного бездействия процессора частота троттлинга падает до 785 МГц (примерно 23% от фактической частоты, которая, естественно, остается без изменений). Она моментально восстанавливается до максимума при подаче нагрузки на процессор — даже малейшей, что хорошо видно на правом скриншоте. Который также демонстрирует, что ODCM можно успешно сочетать с Enhanced SpeedStep — в этом случае частота троттлинга колеблется в интервале 647 — 2800 МГц (при заданном «коэффициенте умножения» 14x).



Та же самая картина, но на Prescott. Этот процессор ведет себя несколько по-другому — на левой картинке показано последовательное увеличение полезного цикла с 12.5% до 50%, не приводящее к изменению частоты троттлинга и означающее, что минимально возможный цикл активности процессора составляет 50%. Правая картинка показывает дальнейшее увеличение цикла активности до 100% (т.е. полного отключения ODCM), четко сопровождающееся увеличением частоты троттлинга. Не очень понятно, почему Intel называет эту технологию «программной». Да, ее настройки (включение/выключение) действительно управляются программно (как и настройки всех остальных технологий кроме детектора аварийного перегрева), но ее поведение, в чем легко убедиться по нашим тестам, полностью автоматическое («аппаратное»). Итоги

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

Механизм термального мониторинга №1 (TM1)

  • Срабатывание: при перегреве процессора (по достижению порогового значения датчика, заданного на этапе производства процессора);
  • Управление производительностью: модуляция тактовой частоты процессора;
  • Управления питающим напряжением: отсутствует;
  • Поведение: приоритет температуры процессора над его производительностью;
  • Дополнительные характеристики: снижение цикла полезного действия процессора вплоть до 46% (Prescott 3.4 ГГц, Nocona 3.4 ГГц).

TM1 — интересная и полезная технология, призванная предотвратить излишний перегрев процессора при возникновении внештатной ситуации (например, при остановке вентилятора на кулере процессора). Разумеется, ничто не мешает этой технологии работать и в штатной ситуации — например, при использовании некачественной системы охлаждения. В связи с чем, на наш взгляд, у этой технологии есть один серьезный недостаток: эффект действия TM1 абсолютно прозрачен для операционной системы, а также неискушенных пользователей и типичного ПО информационного характера. Почему? Потому что как операционная система, так и популярные утилиты вроде CPU-Z или WCPUID покажут пользователю, что частота процессора в его системе по-прежнему равняется, к примеру, 3.4 ГГц, а загрузка процессора — 100% (при полной нагрузке). Тогда как реально процессор может активно «троттлиться», т.е. работать на своих минимальных 46% и сильно удивлять пользователя своей производительностью.

Механизм термального мониторинга №2 (TM2)

  • Срабатывание: при перегреве процессора;
  • Управление производительностью: модуляция тактовой частоты процессора;
  • Управления питающим напряжением: присутствует;
  • Поведение: приоритет температуры процессора над производительностью (тем не менее, производительность снижается в меньшей степени по сравнению с TM1, за счет одновременного понижения напряжения питания);
  • Дополнительные характеристики: снижение цикла полезного действия процессора до уровня, соответствующего отношению минимального множителя на стандартный (14/17 = 82% для процессора Xeon Nocona 3.4 ГГц).

TM2 — в своей основе весьма похожий (ибо фактически основан на том же принципе — модуляции тактовой частоты), но все же улучшенный вариант технологии TM1. Главное усовершенствование заключается в снижении питающего напряжения питания при срабатывании механизма TM2 (т.е. при перегреве процессора). Это полезно как с точки зрения продления срока службы процессора, так и его производительности (падение которой в случае TM2 меньше, чем при использовании TM1). Но как наследник технологии TM1, механизм TM2 не лишен того же недостатка — его полной прозрачности для пользователя.

Серверный вариант технологии Enhanced SpeedStep (DBS)

  • Включение: по запросу;
  • Управление производительностью: модуляция тактовой частоты процессора;
  • Управление питающим напряжением: присутствует;
  • Поведение: ручное переключение состояний производительности процессора (комбинаций FID и VID) с помощью специализированного ПО (например, драйвера процессора).

Парадоксально, но факт: серверная технология Enhanced SpeedStep мало чем отличается от TM2. Единственное отличие заключается в механизме включения этих технологий — TM2 срабатывает только при перегреве процессора, а DBS можно включать и выключать «по запросу», в т.ч. реализовать автоматическое управление производительностью процессора в зависимости от его загрузки (данная функциональность является неотъемлемой частью утилиты RMClock). С точки зрения идеи (и названия технологии), серверный вариант Enhanced SpeedStep — полный аналог мобильного Enhanced SpeedStep, а также технологий AMD PowerNow! (мобильный вариант, реализованный в процессорах Mobile Athlon XP) и AMD Cool`n'Quiet (десктопный/мобильный вариант, реализованный в процессорах семейства Athlon 64). Но с точки зрения реализации — нет. Серверный Enhanced SpeedStep работает по принципу модуляции тактовой частоты процессора (что несомненно проще с точки зрения реализации, учитывая, что механизм модуляции частоты присутствует в Pentium 4 уже давно), тогда как мобильный Enhanced SpeedStep и фирменные технологии AMD вполне честно изменяют коэффициент умножения процессора «на ходу». Приятный момент заключается в том, что обе технологии умеют эффективно изменять питающее напряжение процессора, которое гораздо сильнее сказывается на потребляемой им мощности (в простейшем приближении, зависимость мощности процессора от его тактовой частоты линейная, от напряжения — квадратичная). Так чем же плох серверный Enhanced SpeedStep? В общем-то, ничем, но недостаток все тот же — полная невидимость переключений «множителя» процессора (на самом деле — его эффективной частоты) для пользователя.

Модуляция тактовой частоты по запросу (ODCM)

  • Включение: по запросу;
  • Механизм управления производительностью: модуляция тактовой частоты процессора;
  • Механизм управления напряжением процессора: отсутствует;
  • Поведение: автоматическое изменение уровня модуляции тактовой частоты в зависимости от требуемого уровня производительности процессора.
  • Дополнительные характеристики: снижение цикла полезного действия процессора до уровня, зависящего от модели процессора (до 50% для Prescott 3.4 ГГц, до 12.5% для Nocona 3.4 ГГц).

Занятная технология, позволяющая, на первый взгляд, значительно снизить частоту процессора в режиме простоя и, следовательно, значительно уменьшить его энергопотребление. В связи с чем даже закономерно возникает вопрос — а почему же тогда эта технология не задействована по умолчанию? Ответ пришел к нам достаточно неожиданно — мы просто решили сравнить температуру процессора в режиме простоя «как есть» (на частоте 3.4 ГГц), и при 50% модуляции (при частоте троттлинга порядка 1.9 ГГц). Результат оказался неожиданным — в обоих случаях наблюдалась совершенно одинаковая температура процессорной зоны (порядка 46°C)! Но если немного поразмыслить, все выглядит весьма логично: когда процессор находится в режиме простоя (HLT), естественно ожидать, что он войдет в «спящий» (энергосберегающий) режим. И ему уже, попросту говоря, все равно, происходит ли вдобавок модуляция тактовой частоты или нет. Но постойте… так что же, тогда получается, что и эффект от снижения «множителя» процессора в DBS будет таким же незначительным? К сожалению, мы уже не имели возможность проверить это утверждение на практике, но очень даже может быть… Вместо заключения

На момент написания статьи на сайтах, распространяющих бесплатное программное обеспечение, сравнительно широкое распространение получила новая утилита ThrottleWatch от Panopsys, предназначенная для обнаружения и количественной оценки троттлинга на процессорах семейства Pentium 4. Поскольку она явно соответствует тематике статьи, мы решили не обойти ее стороной — рассмотреть ее основные возможности и сравнить таковые с возможностями новой (готовящейся к выходу) версии 1.3 нашей утилиты RMClock.

Мы поступили стандартно: взяли процессор Pentium 4 (Prescott), подали 100% нагрузку, предварительно запустив утилиты RMClock и ThrottleWatch, после чего остановили вентилятор на кулере процессора.

Вполне достоверно можно утверждать: ThrottleWatch действительно способна заметить переход процессора в режим троттлинга. Механизм определения, естественно, нам неизвестен, однако следует отметить больший разброс величины «CPU Throttling, %» по сравнению с разбросом показаний «Throttled Clock» в RMClock. К тому же, неясно, что принимается программой за 100% троттлинга, но по графикам (полученным с одинаковым интервалом отсчета) заметно, что эти 100% достигаются чуть раньше, чем 46% активности процессора в нашей утилите. По всей видимости, за 100% троттлинга просто (наобум) взято падение производительности процессора до 50%. Продолжаем эксперимент: включаем кулер…

Кривые «CPU Throttling, %» и «Throttled Clock» в двух утилитах вновь практически совпадают (за исключением разброса величин). Напоследок — самое интересное: посмотрим, а как отнесется ThrottleWatch к другим формам троттлинга? К сожалению, возможности проверить механизмы TM2 и DBS на момент тестирования этой утилиты у нас уже не было. Поэтому нам ничего не оставалось сделать, кроме как исследовать ODCM на Prescott, которую мы задействовали на 50% с помощью утилиты CPUMSR.

Результат довольно занятный! Тогда как RMClock способна четко уловить падение «эффективной» частоты процессора, ThrottleWatch продолжает как ни в чем не бывало уверять пользователя, что процессор работает на полную мощность, без троттлинга…

Подводя итог, ThrottleWatch — несомненно, полезная утилита. Учитывая, что это первая специализированная утилита (из неспециализированных, прежде всего, заслуживает внимания CPU Stability Test из тестового пакета CPU RightMark), способная уловить такую тонкую и прозрачную для пользователя технологию Intel, как троттлинг процессора. Тем не менее, методы измерения троттлинга в ThrottleWatch явно оставляет желать лучшего. В связи с чем, нам ничего не остается порекомендовать пользователям, кроме как ждать анонса новой версии утилиты RMClock, способной уловить любые формы троттлинга процессора.

Редакция благодарит компанию Ниагара за предоставленную платформу Intel Xeon (Nocona)



30 ноября 2004 Г.

Intel Pentium 4 Intel Xeon — ,

Intel Pentium 4 Intel Xeon — ,

,

- «» . — Thermal Throttling Pentium 4 Northwood Prescott — 8 . , — , . — — . , , , , . Intel Enhanced SpeedStep Xeon. , Intel Pentium 4 ( ) .

1

  • : Intel Pentium 4 3.4 ( Prescott)
  • : Intel 865PE
  • : Gigabyte GA-8IPE1000 Pro2
  • : 2x256 KingMax DDR-433
  • : ATI Radeon 9800 Pro
  • HDD: WD Raptor WD360, SATA, 10000 rpm, 36Gb

2

  • : Intel Xeon 3.4 ( Nocona)
  • : Intel E7525
  • : Supermicro X6DA8-G
  • : Leadtek PX350 TDH, NVIDIA PCX5900
  • HDD: WD Raptor WD360, SATA, 10000 rpm, 36Gb

(Actual CPU Clock), (CPU Load), , « » (Throttled CPU Clock). , .

, , ( , 1 ). , — , , (Time Stamp Counter, TSC), RDTSC IA-32 (x86). , TSC , , . , , , (CPU-Z, WCPUID, RightMark — RMMA, RMSpy RMClock).

«» , , . , — . , — , . , ( , , , , — «», «» , (100%) — «» ). — , 100 ( 1 ), , , — .., , . , — , .

. , — - . — ( — 15 , .., , 100- 6-7 , , 15-16%). — , — ( — ). RMClock, , , () — , , .

, , «» , ( , , Pentium 4 Hyper-Threading, — , , ) (user mode) (kernel user mode). «», «» — ( HLT). , «» «» , 0% 100% .

, — ( ). «» RMClock — , SysInfo. , . , , . ? — «». — , .


. 25% . ( — IA-32 Intel(R) Architecture Software Developers Manual, Volume 3: System Programming Guide)

— … 100% «». «», 100% , . , , , . .

, RMClock — ( ) 100% , «» . ( ) , — . , 0 ( ) , .

, — Intel Pentium 4 Intel Xeon. Intel :

  • (catastrophic shutdown detector);
  • (automatic thermal monitoring mechanism) — Thermal Monitor 1 Thermal Monitor 2;
  • (software controlled on-demand clock modulation);
  • Enhanced Intel(R) SpeedStep.

.

, (.. , , - ) , P6 Pentium 4, Xeon Pentium M. — ( ) RESET# ( ). , ( 100°C) Pentium 4 Xeon ( PWRGOOD :), .. ).

1

Thermal Monitor 1 (TM1) — , «» (Throttling, Thermal Throttling, Thermal Trip), , , , Pentium 4 Prescott .

1 Pentium 4, Xeon Pentium M ( ), , ( ) ( ). , TM1 ( CPUID), ( - IA32_MISC_ENABLE). Intel, TM1 BIOS ( ).

, TM1 — ( ) (, ) , , , — .

— Pentium 4 Prescott ( 1) RMClock.



TM1 (ODCM), , — . , , .

100% ( , FPU-). ( SpeedFan) 66°C. SpeedFan .

15 70°C, TM1 ( ). 1 — 46% (duty cycle). ( , ) , . ( , , , ) , (.. TM1) . ~46% ( — 1555 ). 80°C, - , , . — : TM1 ( — 70°C) « ». 80°C, (, , ) ( 70°C).

, — .

2.5 — 70°C, 100%, ( ).

, Intel Xeon Nocona ( 2).



RMClock . , , , .. Pentium 4 (Prescott) Brand ID CPUID ( Nocona Prescott, -, ). « » — TM1 ODCM ( Prescott), TM2 Enhanced SpeedStep ( , , Pentium M). TM1 Enhanced SpeedStep ( RMClock, ).

100% , ( ) ( SpeedFan , ). 1 40 , . 2.5 , , Prescott — 46% ( , ). , , TM1 Nocona , Prescott ( , , , ).

. — 40 ( , ).

2

Thermal Monitor 2 (TM2) — , Pentium M, , Intel, Pentium 4 ( , — Xeon Nocona). , TM2 ( ) (, FID — ) (VID) , TM1 . , TM2 . TM2 CPUID, — MSR (IA32_MISC_ENABLE MSR_THERM2_CTL), , TM2 Pentium M Pentium 4 (Xeon) . TM2 (target) FID VID, ( , TM1).

TM2 BIOS. TM2 2.8 (166- ) 3.6 ( 200- ), TM1. TM1 TM2 , . FID VID BIOS . FID (14x), VID — 1.275 .

TM2 Xeon Nocona ( ). BIOS , CPUMSR ( RMClock), TM1 TM2. FID VID (, , VID CPUMSR ). RMClock.



— TM2 TM1. — ( Minimal FID/VID), BIOS 14x 1.388V ( ), , TM2. — . , 100% , … .

? ( TSC) … ! — . 1 30 , 82% 2800 , .. , «» 14x ( , , ) . , : , , « ». ? , ( Intel), , . — :). «» Pentium 4 / Xeon , , , TM2 — … . , ( TM1): TM2 .

. .

Enhanced SpeedStep

«», , «» Intel Xeon Nocona — Enhanced SpeedStep ( — DBS, Demand-Based Switching, .. « »), Intel — 2004.

Enhanced SpeedStep Pentium M Intel SpeedStep ( Pentium III Pentium 4) (P-state transitions, P-state FID VID). SpeedStep ( ) ( - ). Enhanced SpeedStep CPUID, — MSR (IA32_MISC_ENABLE, MSR_PERF_STATUS MSR_PERF_CTL).

Enhanced SpeedStep Xeon (.. ) , . , ? ( TM1, , ), RMClock, / (P-state profile: Minimal). 100% . …




- ? — . , : () , 82% 2800 , . , Enhanced SpeedStep ( ) — . TM2, . , « ».



, — , «» — 14x 17x. , , .

, Enhanced SpeedStep ( TM2). — BIOS ( ) , . CPUMSR. , TM2 TM1. FID/VID TM2 target. « » ( , VID CPUMSR ).



— . , TM2 TM1 — . , ( / ), — 1.000 . — , ( ).

(ODCM)

— , ( , ) / Pentium 4 Xeon. ACPI CPUID, — MSR IA32_CLOCK_MODULATION.

, — / ( 12.5% 87.5% 12.5%, ).

CPUMSR. Xeon Nocona ( ) — 12.5% .



— 785 ( 23% , , , ). — , . , ODCM Enhanced SpeedStep — 647 — 2800 ( « » 14x).



, Prescott. - — 12.5% 50%, , 50%. 100% (.. ODCM), . , Intel «». , (/) ( ), , , («»).

. , .

1 (TM1)

  • : ( , );
  • : ;
  • : ;
  • : ;
  • : 46% (Prescott 3.4 , Nocona 3.4 ).

TM1 — , (, ). , — , . , , : TM1 , . ? , CPU-Z WCPUID , - , , 3.4 , — 100% ( ). «», .. 46% .

2 (TM2)

  • : ;
  • : ;
  • : ;
  • : ( , TM1, );
  • : , (14/17 = 82% Xeon Nocona 3.4 ).

TM2 — ( — ), TM1. TM2 (.. ). , ( TM2 , TM1). TM1, TM2 — .

Enhanced SpeedStep (DBS)

  • : ;
  • : ;
  • : ;
  • : ( FID VID) (, ).

, : Enhanced SpeedStep TM2. — TM2 , DBS « », .. ( RMClock). ( ), Enhanced SpeedStep — Enhanced SpeedStep, AMD PowerNow! ( , Mobile Athlon XP) AMD Cool`n'Quiet (/ , Athlon 64). — . Enhanced SpeedStep ( , , Pentium 4 ), Enhanced SpeedStep AMD « ». , , ( , , — ). Enhanced SpeedStep? -, , — «» ( — ) .

(ODCM)

  • : ;
  • : ;
  • : ;
  • : .
  • : , ( 50% Prescott 3.4 , 12.5% Nocona 3.4 ).

, , , , , . — ? — « » ( 3.4 ), 50% ( 1.9 ). — ( 46°C)! , : (HLT), , «» () . , , , . … , , «» DBS ? , , …

, , ThrottleWatch Panopsys, Pentium 4. , — ( ) 1.3 RMClock.

: Pentium 4 (Prescott), 100% , RMClock ThrottleWatch, .

: ThrottleWatch . , , , «CPU Throttling, %» «Throttled Clock» RMClock. , , 100% , ( ) , 100% , 46% . , 100% () 50%. : …

«CPU Throttling, %» «Throttled Clock» ( ). — : , ThrottleWatch ? , TM2 DBS . , ODCM Prescott, 50% CPUMSR.

! RMClock «» , ThrottleWatch , , …

, ThrottleWatch — , . , ( , , CPU Stability Test CPU RightMark), Intel, . , ThrottleWatch . , , RMClock, .

Intel Xeon (Nocona)