Функция управления потреблением энергии в зависимости от текущей нагрузки процессора
Автор: serj. Современные процессоры давно используют энергосберегающие технологии. Для их идентификации и рекламной раскрутки применяют различные громкие имена, но суть остается одной и той же – изменение производительности элементов ЦП в зависимости от загрузки. Энергосбережение – это хорошо, но как оно сказывается на производительности компьютера?
Применима ли эта информация о C-состояниях и P-состояниях к мобильным и встраиваемым процессорам?
Для примера, недавний MacBook Air с процессором i5-5350U в основном поддерживает возможности, описанные выше (но я не уверен про P-состояния, контролируемые оборудованием). Я также смотрел документацию ARM Cortex-A, и, хотя там применяются другие термины, механизмы управления питанием выглядят похоже.
Turbo Boost
Эта технология позволяет автоматически увеличить тактовую частоту процессора свыше номинальной (саморазгон), что позволяет увеличить производительность чипа на некоторое время.
В основном это используется для повышения производительности в однопоточных приложениях или плохо оптимизированных под многпоточность, где производительность одного ядра важнее их количества. В таком случае нагрузка снимается в других ядер и освобожденная мощность уходит на некоторую часто ядер. В другом случае эта технология просто позволяет на время поднять производительность чипа за счет повышения тактовой частоты.
Значение этого саморазгона зависит от множества факторов:
- Тип рабочей нагрузки
- Число активных ядер
- Оценка тока потребления
- Оценка потребляемой мощности
- Температура процессора
Технология Turbo Boost 1.0 применялась в процессорах Nehalem и Westmere. Далее стала применяться чуть усовершенствованная версия Turbo Boost 2.0. Все отличия выглядят так.
Признак | 1.0 версия | 2.0 версия |
---|---|---|
Шаг множителя | 133 Мгц | 100 Мгц |
TDP | не превышает | на короткое время превышает |
Также стоит отметить более плавное повышение величины разгона с уменьшением числа активных ядер у 2.0 версии. Вторая версия в первые несколько секунд после долгого простоя повышает тактовую частоту выше, чем она должна быть для нормального TDP, но из-за немгновенного прогрева чипа это не критично. Затем же разгон скидывается до не превышающего TDP уровня. Похожий алгоритм можно увидеть в NVIDA GPU Boost 2.0, про которую можно посмотреть тут.
Особенно большим Turbo Boost может быть у мобильных процессоров, например в Intel Core M.
Интересный факт: у модели Intel Core m7-6Y75 максимальный Turbo Boost составляет c 1,2 Ггц до 3,1 Ггц!
Speed Shift
Эта технология является продолжением развития SpeedStep. Она работает эффективнее и быстрее реагирует на повышение нагрузки. Это значит, что она процессор быстрее достигает нужной тактовой частоты и быстрее справляется с задачей. Speed Shift может работать только в процессорах, начиная с поколения Skylake, так как реализована аппаратно. Также она должна поддерживаться операционной системой и на данный момент с этим уже справляется Windows 10.
Также более усовершенствованная версия данной технологии была представлена в Intel Kaby Lake.
SpeedStep
Это такая технология энергосбережения, призванная динамически менять тактовую частоту и напряжение питания в зависимости от нагрузки. Ведь зачем процессору работать на полную, если нагрузки никакой нет? Энергопотребление процессора приблизительно прямо пропорционально зависит от его частоты. Это значит, что снизив частоту в 2 раза, мы снизим в 2 раза и энергопотребление. Также снизится и тепловыделение и, следовательно шум от кулера. А от напряжения энергопотребление зависит во второй степени. Это уже значит, что снизив напряжение питания в 2 раза, мы снизим энергопотребление в 4 раза! Но, к сожалению менять напряжение так сильно нельзя и даже слабое изменение питания может сделать работу невозможной. В основном это снижение происходит в состоянии очень низкой загрузки при помощи функции Enhanced Halt State (или C1E). Так что львиная доля экономится за счет снижения тактовой частоты.
У этой технологии есть несколько версий: SpeedStep, SpeedStep II и SpeedStep III, но мы не будем заострять на этом внимание, будет достаточно и описания. Можно лишь упомянуть, что представлена она была в далеком 2001 в процессоре Mobile Pentium III.
Что такое TDP (Thermal Design Power, требования к теплоотводу)
Для каждого процессора Intel гарантирует определённую рабочую частоту с определённой мощностью, часто имея в виду определённый кулер. Большая часть людей приравнивает TDP к максимальному энергопотреблению, учитывая, что в расчётах тепловая мощность процессора, которую необходимо рассеять, равна мощности, им потребляемой. И обычно TDP обозначает величину этой мощности.
Но, строго говоря, TDP относится к возможностям кулера по рассеиванию энергии. TDP – это минимальная возможность кулера, гарантирующая указанную эффективность. Часть энергии рассеивается через сокет и материнскую плату, а значит, рейтинг кулера может быть ниже TDP, но в большинстве обсуждений TDP и энергопотребление обычно означали одно и то же: сколько энергии процессор потребляет под нагрузкой.
В рамках системы TDP можно установить в прошивке. Если процессор использовал TDP в качестве максимального ограничения по мощности, то мы бы увидели, как та же измерительная программа выдаёт подобные графики для процессоров высокой мощности с несколькими ядрами.
В последние годы Intel использовала именно такое определение TDP. Для любого заданного процессора Intel гарантировала рабочую частоту (базовую частоту) для конкретной мощности – TDP. Это значит, что процессор типа 65 Вт Core i7-8700, с обычной частотой 3,2 ГГц, и 4,7 ГГц в турбо-режиме, гарантированно будет потреблять до 65 Вт только при работе на частоте в 3,2 ГГц. Intel не гарантирует эффективной работы выше указанных 3,2 ГГц и 65 Вт.
Кроме базовых показателей, Intel также использует турбо-режим. Что-то вроде Core i7-8700 может показывать в турбо-режиме 4,7 ГГц, и потреблять при этом гораздо больше энергии, чем процессор, работающий на 3,2 ГГц. Турбо-режим для всех ядер на процессоре Core i7-8700 работает на частоте 4,3 ГГц – куда как больше гарантированной 3,2 ГГц. Ситуация усложняется, когда турбо-режимы не опускаются до базовой частоты. То есть, если процессор будет работать с постоянным превышением TDP, купленный вами кулер на 65 Вт (или тот, что шёл в комплекте) станет узким местом. Если вам нужно больше быстродействия, такой кулер надо выкинуть и взять что-то получше.
Однако производитель вам этого не сообщает. Если охлаждения для турбо-режимов будет недостаточно, а процессор достигнет температурного потолка, то большая часть современных процов перейдут в режим ограничения мощности, уменьшив быстродействие с тем, чтобы оставаться в рамках заданного энергопотребления. И в результате быстрый процессор не достигает пределов своих возможностей.
Заключение
Здесь не были затронуты все технологии Intel. Здесь лишь были оговорены наиболее известные и больше всего влияющие на производительность. Также были затронуты технологии для корпоративного сегмента, но, довольно, вскользь. Если возникли какие-то вопросы, то сначала советуем вам заглянуть в раздел «Введение», где написаны границы применимости данной статьи. Надеемся, что эта статья помогла вам в выборе процессора от Intel и вы разобрались в том, что дают процессору различные технологии.
Мир случайных чисел
В основном я буду говорить о потребительской электронике. Часто PL1, PL2 и Tau тщательно контролируются в таких ограниченных по охлаждению условиях, как ноутбуки или небольшие ПК. Я знаком с несколькими мощными, и в то же время стильными вариантами ПК, у которых PL2 также приравнивали к TDP, чтобы процессор смог немного разогнаться, но не до такой степени, чтобы нагрузка одного-двух ядер выходила за пределы TDP.
Однако в наших обзорах CPU после распространения шестиядерных процессоров мы часто начали видеть цифры гораздо большие, чем PL1 или PL2, и это потребление продолжается сколь угодно долго, если только не выходит за пределы ограничений температуры. Почему это происходит?
В любом современном BIOS, в особенности у основных производителей мат.плат, будут присутствовать настройки по ограничению мощности (краткосрочное и долгосрочное) и длительности. В большинстве случаев по умолчанию пользователю неизвестно, в какое значение они установлены, поскольку там будет написано Auto, что является кодовым обозначением «мы знаем, какое значение им назначить, не волнуйтесь». Производители запишут величины в память и будут их использовать, но пользователь увидит только Auto. В результате можно назначить PL2 в 4096 Вт и сделать Tau очень большим, к примеру, 65535, или -1 (бесконечность – зависит от варианта BIOS). Это означает, что CPU без перерыва будет работать в режиме турбо, пока не превысит температурные ограничения.
Зачем производители так поступают? Тому может быть много причин, хотя конкретные причины у конкретных производителей могут разниться.
Во-первых, это означает, что пользователь может поддерживать турбо-режим постоянно, и каждое ядро будет работать в режиме турбо каждую секунду. Результаты измерений быстродействия будут доставать до небес, в обзорах или когда пользователя меряются показателями, всё выглядит прекрасно,
Во-вторых, продукты для этого и разрабатываются. Intel часто с каждым запуском определяет спецификацию мат.платы по умолчанию (у них даже были свои материнки, которые они продавали в розницу), с определённым количеством фаз питания и с ожидаемым временем жизни. Производители, очевидно, могут внедрять свои варианты: больше фаз питания, более мощные фазы, особый подвод питания для улучшения эффективности, и т.д. Если их плата может поддерживать турбо-режим всех ядер беспрерывно, то почему бы и нет?
В-третьих, производители более дорогих моделей плат знают, что энтузиасты будут использовать для них улучшенные системы охлаждения. Если процессор потребляет более 160 Вт, а у пользователя есть приличная система охлаждения, тогда турбо-режим на всех ядрах улучшит впечатление от продукта. Стандарты Intel определяются для рекомендованных компанией кулеров.
Как это все работает, например, на Linux?
На этот вопрос я отвечу в другой статье.
Сегодняшняя ситуация, и что мы можем с ней сделать
Давно хотел написать подобную статью, по меньшей мере, с момента запуска Kaby Lake. Большая часть процессоров в потребительских материнских платах работает с неограниченным PL2, и это считалось нормальным годами. И только по результатам тестирования Core i9-9900K мы начали замечать нечто странное. В нашей статье на прошлой неделе по поводу нового Xeon E написано, что наша материнская плата Supermicro буквально следует рекомендациям от Intel. Может показаться очевидным, что более коммерческая/серверная плата будет следовать спецификациям от Intel, но вживую я лично видел такое впервые. Очевидно, что потребительские платы по таким спецификациям не работают, и не работали. Я бы сказал, что собственные результаты тестирования от Intel (и результаты тестирования процессоров Intel от AMD) на потребительских материнках тоже не соответствуют спецификациям от Intel.
- TDP пиковое для PL2
- TDP долговременное для PL1.
Таким образом Intel и другие смогут объяснить пиковое потребление и базовую частоту.
Если пользователи хотят, чтобы потребительские материнские платы изменились, то это будет сложнее сделать. Все производители хотят опередить друг друга, поэтому мы сталкиваемся с такими вещами, как опция Multi-Core Turbo, включённая по умолчанию. Производители предпочитают путь «неограниченного PL2», поскольку это позволяет им пролезать на вершины чартов быстродействия. А вот в ноутбуках с ограниченными возможностями по охлаждению часто заданы свои варианты PL1, PL2 и Tau, и часто они строго соответствуют этим параметрам.
Вопрос в том, насколько спецификации от Intel важны для настольных процессоров от Intel? Если нам надо следовать этим рекомендациям буквально, может, мы сделаем ещё один шаг, и будем использовать только стоковые кулеры?
В процессорах Intel применяется множество различных технологий, которые влияют на производительность чипов. Они служат для разных целей и помогают процессору в разных ситуациях. В этой статье мы поможем вам разобраться в технологиях процессоров Intel, что, возможно, поможет вам в выборе чипа от этой компании.
Особенности CPU
Согласно официальной странице продукта, мой процессор поддерживает следующие технологии:
- состояния простоя (Idle States);
- усовершенствованная технология Intel® SpeedStep (Enhanced Intel® SpeedStep Technology).
Теперь выясним, что значит каждое из этих определений.
Введение
В этой статье будут рассмотрены лишь самые основные технологии, применяющиеся в процессорах Intel, которые сильнее всего влияют на их производительность и об использовании которых хорошо известно. Надо отметить, что здесь не будут рассмотрены чипы до 2009 года, так как те чипы на данный момент устарели и ценность представляют лишь самые мощные решения того времени.
Все мы знаем, что в разных линейках процессоров применяются разные технологии, также это зависит от позиционирования модели и ее цены. Посмотреть наличие основных технологий в линейках процессоров Intel можно в этой статье. Там нет про серверные чипы, но будьте уверены, что они достаточно технологичны. А если интересно узнать про интегрированную графику от Intel, то у нас для этого есть отдельная статья. Про технологии AMD можно прочесть по ссылке.
Вы спросите: «А как узнать о наличии тех или иных технологий в моем процессоре?». Для этого нужно зайти сюда и найти нужный вам процессор. После этого ищите вот эти поля.
Intel Quick Sync Video
Это технология Intel, предназначенная для аппаратного ускорения кодирования и декодирования видео. В этом случае в графическом ядре есть специальная интегральная схема, предназначенная для этого. Благодаря этого эта технология справляется со своей задачей лучше, чем видеокарты – и быстрее, и более энергоэффективно, ведь в видеокарте нет блоков, предназначенных специально для этой функции. Но, как и в случае с другими технологиями для аппаратного кодирования/декодирования видео, качество обработки хуже, чем в случае выполнения этой задачей при помощи процессора.
Существует две версии этой технологии. Первая было представлена вместе с микроархитектурой Sandy Bridge в 2011 году. Вторая версия увидела свет в в 2012 году при выходе Ivy Bridge. Вторая версия движка имела несколько изменений, например улучшенный медиасемплер, позволивших ей заметно улучшить скорость работы, качество видео, а также получить поддержку высоких разрешений. Существенный недостаток технологии выходит из того, что она встроена в графическое ядро процессора – ее функционирование невозможно, когда в компьютере основной является дискретный видеоадаптер.
Заметки про Intel® Turbo Boost
Поскольку TDP (расчетная тепловая мощность) — это максимальная мощность, которую процессор может выдержать, то процессор может повышать свою частоту выше базовой, при условии что энергопотребление не превысит TDP. Технология Turbo Boost может временно повышать энергопотребление до границы PL2 (Power Limit 2) на короткий промежуток времени. Поведение Turbo Boost может быть изменено через подсказки оборудованию.
Состояния питания ACPI
Прежде чем говорить про P-состояния, стоит упомянуть про состояния питания ACPI. Это то, что мы, пользователи, знаем, когда используем компьютер. Так называемые глобальные системные состояния (G[Х]) перечислены в таблице ниже.
Источник: ACPI Specification v6.2
Также существует специальное глобальное состояние G1/S4, Non-Volatile Sleep, когда состояние системы сохраняется на энергонезависимое хранилище (например, диск) и затем производится выключение. Это позволяет достичь минимального энергопотребления, как в состоянии Soft Off, но возвращение в состояние G0 возможно без перезагрузки. Оно более известно как гибернация.
Существует несколько состояний сна (Sx). Всего таких состояний шесть, включая S0 — отсутствие сна. Состояния S1-S4 используются в G1, а S5, Soft Off, используется в G2. Краткий обзор:
- G0/S0: Компьютер работает, не спит.
- G1: Sleeping.
- G1/S1: Power on Suspend. Состояние системы сохраняется, питание процессора и кэшей поддерживается.
- G1/S2: Процессор отключен, кэши сброшены.
- G1/S3: Standby или Suspend to RAM (STR). Оперативная память остается практически единственным компонентом с питанием.
- G1/S4: Hibernation или Suspend to Disk. Все сохраняется в энергонезависимую память, все системы обесточиваются.
Вот поддерживаемые состояния ACPI.
High Definition Audio
Это такой набор требований, предъявляемый к интегрированным в процессор аудиокодекам, который призван улучшить качество цифрового звука. Это касается как увеличения числа каналов, так и и разрядности с частотой дискретизации.
Как программно запросить переход в энергосберегающее С-состояние?
Современный (но не единственный) способ запросить переход в энергосберегающее состояние — это использовать инструкцию MWAIT или инструкцию HLT. Это инструкции привилегированного уровня, и они не могут быть выполнены пользовательскими программами.
Инструкция MWAIT (Monitor Wait) заставляет процессор перейти в оптимизированное состояние (C-состояние) до тех пор, пока по указанному (с помощью другой инструкции, MONITOR) адресу не будет произведена запись. Для управления питанием MWAIT работает с регистром EAX. Биты 4-7 используются для указания целевого С-состояния, а биты 0-3 указывают суб-состояние.
Примечание: Я думаю, что на данный момент только AMD обладает инструкциями MONITORX/MWAITX, которые, помимо мониторинга записи по адресу, работают с таймером. Это еще называется Timed MWAIT.
Инструкция HLT (halt) останавливает выполнение, и ядро переходит в состояние HALT до тех пор, пока не произойдет прерывание. Это означает, что ядро переходит в состояние C1 или C1E.
Так как же правильно, кому доверять, в чём разница?
Intel назначает стандарты для своих запчастей. PL1, PL2, Tau, схема материнки, настройки прошивки – для всего есть значения по умолчанию, рекомендованные Intel. Некоторые из них публичные, например, те, что Intel указывает в документах, некоторые – конфиденциальные (и Intel нам о них не расскажет, как бы мы ни упрашивали). Однако это всё же рекомендованные значения. А по итогам, производители материнских плат могут делать всё, что им заблагорассудится. И они так и делают.
В результате, к примеру, мне тестировать оборудование из-за этого становится сложнее. Разным пользователям захочется, чтобы наши настройки были:
1. Рекомендованными Intel,
2. Как из коробки,
3. Вывернуты на максимум.И, естественно, рекомендации Intel дадут куда как меньшие показатели, чем «из коробки», а вариант «вывернуты на максимум» говорит сам за себя.
Стоит отметить, что до сих пор во всех тестах во всех обзорах CPU железо запускалось на настройках «из коробки», а не «рекомендованных Intel».
Чтобы дать некий контекст по значениям измерений, мы использовали мощный CPU и
получили следующие результаты в 25-30 секундном тесте с полной нагрузкой:AnandTech PL2 Tau PL1 Result Unlimited 4096W 999s 4096W 100% Intel Spec, 165W 207W 8s 165W 98% Constant 165W 165W 1s 165W 94% Intel Spec, 95W 118W 8s 95W 84% Constant 95W 95W 1s 95W 71% В последнее время было замечено, что некоторые производители материнских плат меняют свою стратегию по PL1/PL2/Tau, и урезают значение Tau до чего-то разумного, вроде 30 секунд. При запуске измерений скорости на таких материнских платах, пользователи получают результаты меньше, чем обычно, хотя эти результаты оказываются ближе к спецификациям Intel.
Дело в том, что когда на материнских платах стоит значение Auto, производитель обычно не раскрывает точную величину этого значения. В результате описывать работу такого оборудования очень тяжело. А ещё эти значения могут меняться в зависимости от установленного процессора.
Мы обычно проводим тестирования с настройками «из коробки», за исключением памяти, с которой мы используем значения, рекомендованные производителем. Мы считаем, что это наиболее честный способ сообщать читателям о том, на какую скорость они смогут рассчитывать, когда практически никакие настройки не менялись. В реальности это обычно означает, что PL2 установлено в какое-то очень большое значение, а Tau – в очень долгое. Мы постоянно сталкиваемся с режимом турбо, пока температура остаётся в установленных пределах.
Hyper-Threading
Или по-другому гиперпоточность. Из-за этой технологии операционная система определяет одно физическое ядро, как два логических и в соответствии с этим отдает команды. Так получается, что одно ядро работает в 2 потока. Гиперпоточность позволяет таким образом загрузить блоки процессора находящиеся в простое и увеличить его эффективность.
Надо отметить, что два логических ядра проигрывают двум физическим, что хорошо демонстрирует превосходство Core i5 (4 ядра без HT) над Core i3 (2 ядра с HT). Но одно физическое ядро c Hyper-Threading будет производительнее, чем без него, и это видно на примере Core i7 (4 ядра c HT) и Core i5 (4 ядра без HT).
Особенно хорошо эта технология будет помогать в приложениях, умеющих хорошо распараллеливать процессы на различные потоки.
Оглавление
Каков предел энергопотребления процессора?
Это во многом зависит от процессора, но для процессора E3-1245 v5 @ 3.50 ГГц расчетная тепловая мощность (Thermal Design Power, TDP) составляет 80 ватт. Это среднее значение, которое процессор может выдерживать бесконечно долго (Power Limit, PL1 на изображении ниже). Системы охлаждения должны быть рассчитаны на это значение, чтобы быть надежными. Фактическое энергопотребление процессора может быть выше в течение короткого промежутка времени (состояния PL2, PL3, PL4 на изображении ниже). TDP измеряется при нагрузке высокой вычислительной сложности (худший случай), когда все ядра работают на базовой частоте (3.5 ГГц).
Как видно на изображении выше, процессор в состоянии PL2 потребляет больше энергии, чем заявлено в TDP. Процессор может находиться в этом состоянии до 100 секунд, а это достаточно долго.
Управление напряжением
Значительная часть контроллера питания находится в самом процессоре и он может отслеживать и корректировать напряжения по тем законам, которые ему нужны. Вторая часть контроллера располагается на материнской плате, как оно было всегда, но теперь ее функции несколько изменились. Ранее процессор указывал источнику питания выставить нужное ему напряжение и полагал, что это будет выполнено. После перехода на VR12 ситуация изменилась, микросхема контроллера постоянно «отчитывается» о текущих режимах работы (напряжение, ток, температура), а управление процессором условий его работы осуществляется крайне оперативно.
Посмотрим, как же происходит изменение напряжения:
В данном случае изображен процесс повышения напряжения с низкого (простой) в нормальное значение (активный). Изначально был выставлении VID для состояния простоя и для повышения напряжения процессор начинает увеличивать VID (идентификатор напряжения, а не само напряжение) на «1» с небольшой выдержкой между сменой числа. При этом полезно знать две характеристики – размер «шага» по напряжению и «время установления», необходимое на стабилизацию напряжения. Можно вычислить и привести конкретные значения dV и dT, но в этом нет необходимости, существует обобщенный параметр «SlewRate». Он указывает скорость нарастания напряжения в единицу времени. Для контроллера указывается его две разновидности:
Контроллер может управлять напряжением с различной скоростью и эти два параметра задают свойства для двух разных режимов работы.
- «Fast Slew Rate» настраивается в зависимости от особенностей и возможностей преобразователя. В спецификации VR12 указано, что эта настройка должна быть не медленнее 10 мВ / мкс (за одну микросекунду напряжение поменяется на 10 мВ, за 10 мкс на 100 мВ и т.д.).
- «Slow Slew Rate» в четыре раза медленнее «Fast Slew Rate», что означает скорость изменения 2.5 мВ/мкс.
реклама
Время для времени установки нового напряжения можно получить по следующему соотношению:
Для сглаживания пульсаций и бросков тока потребления процессора по шине питания устанавливается множество конденсаторов высокого качества. В последние несколько лет основным элементом является электролитический конденсатор с твердым диэлектриком. Кроме положительных свойств в виде низкого последовательного сопротивления (ESR) и способности долго работать при большом импульсном токе, это принесло и недостатки – сниженная номинальная емкость и концентрированная встроенная последовательная индуктивность (ESL).
Из приведенной выше формулы вытекает ряд интересных наблюдений, стоит на них остановиться. Вполне очевидно, что время установки напряжения зависит от величины изменения напряжения и той скорости, с которой преобразователь это напряжение устанавливает, но вот часть «RC» явно указывает на то, что процессор прекрасно осведомлен о напряжении на шине питания. К тому же, «R» есть не что иное, как широко известное «LLC» (Load Line Calibration). Технически оно является выходным сопротивлением преобразователя. Обычно данный параметр настраивается в BIOS и общепринятое мнение гласит – ставь его «сильнее», чтобы напряжение процессора не снижалось под нагрузкой.
Подпишитесь на наш канал в Яндекс.Дзен или telegram-канал @overclockers_news - это удобные способы следить за новыми материалами на сайте. С картинками, расширенными описаниями и без рекламы.
Как центральный процессор может сокращать собственное энергопотребление? Основы этого процесса — в статье.
Центральный процессор (CPU) спроектирован на бесконечно долгую работу при определенной нагрузке. Практически никто не проводит вычисления круглые сутки, поэтому большую часть времени он не работает на расчетном максимуме. Тогда какой смысл держать его включенным на полную мощность? Здесь стоит задуматься об управлении питанием процессора. Эта тема включает в себя оперативную память, графические ускорители и так далее, но я собираюсь рассказать только про CPU.
Если вы знаете про C-состояния (C-states), P-состояния (P-states) и то, как процессор переходит между ними, то, возможно, в этой статье вы не увидите ничего нового. Если это не так, продолжайте читать.
Я планировал добавить реальные примеры из ОС Linux, но статья становилась все больше, так что я решил приберечь это для следующей статьи.Основные источники информации, использованные в этом тексте:
Вступление
Современные процессоры давно используют энергосберегающие технологии. Для их идентификации и рекламной раскрутки применяют различные громкие имена, но суть остается одной и той же – изменение производительности элементов ЦП в зависимости от загрузки. Если какой-то модуль не используется, то логично его «заморозить», что снизит мощность потребления и тепловыделение. Первое несущественно для немобильных платформ, а вот повышенное выделение тепла может оказаться важным, поскольку стремление к тишине является общей тенденцией развития аппаратуры и крайне востребовано пользователями.
Энергосбережение – это хорошо, но как оно сказывается на производительности компьютера? Об этом и пойдет речь ниже.
Комбинации состояний ACPI G/S и С-состояний процессора
Приятно видеть все комбинации в таблице:
В состоянии G0/S0/C8 системы процессора запущены, но все ядра отключены.
В G1 (S3 или S4) некорректно говорить про С-состояния (это касается как CC-состояний, так и PC-состояний), так как процессор полностью обесточен.
Для G3 не существует S-состояний. Система не спит, она физически отключена и не может проснуться. Ей необходимо сначала получить питание.
Тайные цифры, которых нет на упаковке
Внутри каждого процессора Intel определяет несколько уровней энергии на основе возможностей и ожидаемых рабочих режимов. Однако все эти уровни энергии и возможности можно подстраивать на уровне прошивки, в результате чего OEM-производители решают, как эти процессоры будут работать в их системе. В итоге значение потребления энергии процессором в системе оказывается весьма размытым показателем.
Для простоты можно следить за тремя важными значениями. Intel называет их PL1 (уровень энергии 1), PL2 (уровень энергии 2) и T (Tau).
PL1 – эффективное равномерное ожидаемое потребление энергии в долгосрочной перспективе. По сути, PL1 обычно определяется, как TDP процессора. То есть, если TDP равно 80 Вт, то PL1 равно 80 Вт.
PL2 – краткосрочное максимальное потребление энергии процессором. Эта величина выше PL1, и в это состояние процессор переходит под нагрузкой, что позволяет ему использовать турбо-режимы вплоть до максимального значения PL2. Это значит, что если Intel определила несколько турбо-режимов у процессора, они будут работать, только когда PL2 доходит до максимального энергопотребления. В режиме PL1 турбо не работает.
Tau – временная переменная. Она определяет, как долго процессор должен оставаться в режиме PL2 перед тем, как откатиться на PL1. Tau не зависит от мощности и температуры процессора (ожидается, что при достижении температурного ограничения будет использоваться другой набор сверхнизких значений напряжения и частоты, а система PL1/PL2 перестаёт работать).
Давайте разберём ситуацию большой нагрузки на процессор.
Сначала он начинает работу в режиме PL2. Если нагрузка однопоточная, мы должны достичь верхнего значения турбо, которое обозначено в спецификации. Обычно энергопотребление одного ядра не приблизится к значению PL2 всего чипа. Если мы будем продолжать нагружать ядра, процессор отреагирует, уменьшая частоту турбо-режима в соответствии с по-ядерными значениями, определяемыми Intel. Если энергопотребление процессора достигает значения PL2, то его частота изменяется так, чтобы не выходить за рамки PL2.
Когда система находится под серьёзной нагрузкой долгий промежуток времени, «Tau» секунд, прошивка должна перейти на PL1 как на новое ограничение по мощности. Таблицы турбо перестают применяться – они работают только с режимом PL2.
Если потребление выходит за пределы PL1, тогда частота и напряжение изменяются так, чтобы потребление энергии оставалось в этих пределах. То есть процессор целиком уменьшает частоту от состояния PL2 до состояния PL1 на время работы под нагрузкой. Это значит, что температура процессора должна уменьшиться, и это должно увеличить время жизни процессора.
Режим PL1 работает, пока не исчезнет нагрузка, и ядро не перейдёт в состояние бездействия на определённое количество времени (обычно до 5 секунд). После этого режим PL2 снова может быть включён при появлении другой большой нагрузки.
Приведём примеры некоторых величин – Intel перечисляет несколько вариантов в спецификациях различных процессоров. Для примера я взял Core i7-8700K. Для этого проца верно следующее:
PL1 = TDP = 95 Вт
PL2 = TDP * 1.25 = 118.75 Вт
Tau = 8 секВ данном случае система должна суметь разогнаться до 119 Вт на восемь секунд, а потом снова откатится назад до 95 Вт. Так работает уже несколько поколений процессоров Intel, и по большей части, это не имело особого значения, поскольку энергопотребление процессора целиком часто оказывалось сильно ниже значения PL1 даже под полной нагрузкой.
Однако вся ерунда начинается, когда в игру вступают производители материнских плат, поскольку PL1, PL2 и Tau можно настраивать в прошивке. К примеру, на графике выше можно снять ограничения с PL2, а PL1 назначить 165 Вт и 95 Вт.
Процессор и источник питания
В начале статьи мы немножко «пробежались» по технологиям энергосбережения, все они основаны на изменении напряжении питания процессора. Вроде бы, простая вещь - взять и поменять напряжение, но после внимательного изучения вопроса начинают всплывать неприятные моменты. Для питания процессора используется импульсный преобразователь, что явно подразумевает наличие сглаживающего дросселя (точнее дросселей, фаз же несколько) и демпферных конденсаторов ощутимой емкости. Процессор потребляет большой ток, до «сотен» ампер, а потому к качеству и количеству конденсаторов предъявляются жесткие требования. Типичная емкость конденсаторов колеблется в интервале пять-восемь тысяч микрофарад. Коль скоро в цепи участвует LC контур, то колебательный процесс неизбежен.
Ранее процессоры и их источник питания мало «общались» друг с другом. Процессор лишь выставлял VID (Идентификатор напряжения), а преобразователь источника питания переводил код в нужное напряжение и стабилизировал его на шинах процессора. Причем, довольно часто в цепь по передачи VID «вклинивалась» микросхема мониторинга и контроля (MIO), которая могла переназначить или модифицировать VID. А именно, она могла пропускать код VID из процессора, или подменять его на постоянное значение. В эпоху Core2 именно так и работал механизм разгона, отсюда вытекали два режима функционирования – или работает энергосбережение, но нельзя изменить (повысить) напряжение на процессоре, или напряжение можно выставить любым, но оно уже не сможет снижаться в простое. Отдельные микросхемы MIO, кроме режима «замены», могли использовать VID от процессора с добавлением смещения, что позволяло разгонять процессор и сохранить функцию снижения напряжения в простое, но таких MIO существовало не много, да и не все они могли работать нормально. Например, в MIO Winbond такая функция была реализована, но при попытке поставить любое смещение, не равное нулю, компьютер перегружался. В более новых процессорах это «упрощенная» технология была изменена и часть контроллера преобразователя переместилась в процессор. Если подумать, то это довольно логично, хотя и звучит дико. Процессор «знает» про себя всё, когда и что ему надо делать и насколько ему нужно какое напряжение. Фраза звучит несколько размыто, но в процессоре действительно много изменений в этой области и продвинутые режимы турборазгона лишь верхушка айсберга. Процессор знает ток потребления от источника питания, но это уже давно не новость, ограничение предельной мощности (тока) было реализовано уже в «Nehalem». К слову – в качестве датчика тока использовался фрагмент трассировки шины питания, падение на нем. В последующих моделях процессоров блок контроля мощности был существенно расширен. К сожалению, сообщить что-то интересное по данному вопросу крайне затруднительно, Intel не хочет делиться этой информацией. Единственно, что нельзя утаить – процессор общается с контроллером очень плотно и, фактически, сам устанавливает для себя напряжение. Это и раньше так было, но теперь он это делает активно и постоянно. Как бесплатный бонус – теперь можно программно знать о той мощности, которая потребляется процессором и некоторыми его частями.
InTru3D
Это такой стандарт для 3D-контента, разработанный Intel и DreamWorks. И, что вполне логично, этот стандарт хорошо функционирует на современных процессорах Intel. Подробнее можно посмотреть здесь.
С-состояния
Вот базовые С-состояния (определенные в стандарте ACPI).
- C0: Active, процессор/ядро выполняет инструкции. Здесь применяются P-состояния, процессор/ядро могут работать в режиме максимальной производительности (P0) или в режиме энергосбережения (в состоянии, отличном от P0).
- C1: Halt, процессор не выполняет инструкций, но может мгновенно вернуться в состояние С0. Поскольку процессор не работает, то P-состояния не актуальны для состояний, отличных от С0.
- C2: Stop-Clock, схож с C1, но требует больше времени для возврата в C0.
- С3: Sleep. Возврат в C0 требует ощутимо большего времени.
Примечание: Из-за технологии Intel® Hyper-Threading существуют также С-состояния потоков. Хотя отдельный поток может работать с С-состояниями, изменения в энергопотреблении происходят, только когда ядро входит в нужное состояние. В данной статье тема C-состояний на потоках рассматриваться не будет.
Вот описание состояний из даташита:
Примечание: LLC обозначает Last Level Cache, кэш последнего уровня и обозначает общий L3 кэш процессора.
Визуальное представление состояний:
Источник: Software Impact to Platform Energy-Efficiency White Paper
Последовательность C-состояний простыми словами:
- Нормальная работа при C0.
- Сначала останавливается тактовый генератор простаивающего ядра (С1).
- Затем локальные кэши ядра (L1/L2) сбрасываются и снимается напряжение с ядра (С3).
- Как только все ядра отключены, общий кэш (L3/LLC) ядер сбрасывается и процессор (почти) полностью может быть обесточен. Я говорю «почти», потому что, по моим предположениям, какая-то часть должна быть активна, чтобы вернуть процессор в состояние С0.
Однако если ядро работает (C0), то единственное состояние, в котором может находиться процессор, — C0. С другой стороны, если ядро полностью выключено (C8), процессор может находиться в C0, если другое ядро работает.
Примечание: Intel Software Developer’s Manual упоминает про суб-C-состояния (sub C-state). Каждое С-состояние состоит из нескольких суб-С-состояний. После изучения исходного кода модуля ядра intel_idle я понял, что состояния C1 и C1E являются состоянием С1 с подтипом 0 и 1 соответственно.
Число подтипов для каждого из восьми С-состояний (0..7) определяется с помощью инструкции CPUID. Для моего процессора утилита cpuid выводит следующую информацию:
Я создал гистограмму, представленную ниже, из исходного кода драйвера intel_idle для моего процессора (модель 0x5e). Подписи горизонтальной оси:
Имя C-состояния: специфичное для процессора состояние: специфичное суб-состояние.
Вертикальная ось обозначает задержку выхода и целевые резидентные значения из исходного кода. Задержка выхода используется для оценки влияния данного состояния в реальном времени (то есть сколько времени потребуется для возвращения в С0 из этого состояния). Целевое резидентное значение обозначает минимальное время, которое ядро должно находиться в данном состоянии, чтобы оправдать энергетические затраты на переход в это состояние и обратно. Обратите внимание на логарифмический масштаб вертикальной оси. Задержки и минимальное время нахождения в состоянии увеличивается экспоненциально с увеличением номера состояния.
Константы задержок выхода и целевых резидентных значении C-состояний в исходном коде intel_idle
Примечание: Хотя состояния С9 и С10 включены в таблицу, они имеют 0 суб-состояний и поэтому не используются в моем процессоре. Остальные процессоры из семейства могут поддерживать эти состояния.P-состояния, управляемые операционной системой
В этом случае операционная система знает о P-состояниях и конкретном состоянии, запрошенным ОС. Проще говоря, операционная система выбирает рабочую частоту, а напряжение подбирается процессором в зависимости от частоты и других факторов. После того, как P-состояние запрошено записью в моделезависимый регистр (подразумевается запись 16 бит в регистр IA32_PERF_CTL), напряжение изменяется до автоматически вычисленного значения и тактовый генератор переключается на заданную частоту. Все ядра имеют одно общее P-состояние, поэтому невозможно установить P-состояние эксклюзивно для одного ядра. Текущее P-состояние (рабочий режим) можно узнать, прочитав информацию из другого моделезависимого регистра — IA32_PERF_STATUS.
Смена P-состояния мгновенна, поэтому в секунду можно выполнять множество переходов. Это отличает от переходов C, которые выполняются дольше и требуют энергетических затрат.
Extreme Memory Profile (XMP)
Эта технология позволяет пользовать заранее сделанными профилями разгона оперативной памяти. Это может пригодиться, если вы не хотите рисковать. Так вы просто берете нужный вам профиль и не беспокоитесь о его работоспособности. Профиль выбирается в BIOS. Для этого оперативная память должна быть сертифицированной.
Как снизить энергопотребление процессора во время его работы?
На процессорах для массового использования (мы не берем в расчет вещи, которые возможны при их проектировании) для снижения потребляемой энергии можно реализовать один из сценариев:
- Сократить энергопотребление подсистемы (ядра или другого ресурса, такого как тактовый генератор или кэш) путем отключения питания (уменьшив напряжение до нуля).
- Снизить энергопотребление путем снижения напряжения и/или таковой частоты подсистемы и/или целого процессора.
Второй вариант требует чуть больше объяснений. Энергопотребление интегральной схемы, которой является процессор, линейно пропорционально тактовой частоте и квадратично напряжению.
Примечание для тех, кто разбирается в цифровой электронике: Pcpu = Pdynamic + Pshort circuit + Pleak. При работающем процессоре Pdynamic является наиболее важной составляющей, именно эта часть зависит линейно от частоты и квадратично от напряжения. Pshort circuit пропорционально частоте, а Pleak — напряжению.Более того, напряжение и тактовая частота связаны линейной зависимостью.
Высокая производительность требует повышенной тактовой частоты и увеличения напряжения, что еще больше влияет на энергопотребление.
Значит, TDP ничего не значит? Почему это стало проблемой только сейчас?
За последнее десятилетие методика использования термина TDP не поменялась, а вот процессоры начали по-другому использовать свой энергетический бюджет. Недавнее появление шести- и восьмиядерных потребительских процессоров с частотами за 4 ГГц означает, что новые процессоры с большой загрузкой превышают заявленное TDP. В прошлом мы видели, как четырёхядерные процессоры с обозначенным рейтингом в 95 Вт использовали только 50 Вт даже под полной нагрузкой в турбо-режиме. И если мы добавляем ядра, а обозначение TDP на упаковке не меняем, то что-то должно поменяться.
P-состояния
P-состояния подразумевают, что ядро в состоянии С0, потому что ему требуется питание, чтобы выполнять инструкции. P-состояния позволяют изменять напряжение и частоту ядра (другими словами рабочий режим), чтобы снизить энергопотребление. Существует набор P-состояний, каждое из которых соответствует разных рабочим режимам (пары напряжение-частота). Наиболее высокий рабочий режим (P0) предоставляет максимальную производительность.
Процессор Intel® Xeon® E3–1200 v5 позволяет контролировать P-состояния из операционной системы (Intel® SpeedStep Technology) или оставить это оборудованию (Intel® Speed Shift Technology). Вся информация ниже специфична для семейства Intel® Xeon® E3-1200 v5, но я полагаю, это в той или иной степени актуально и для других современных процессоров.
Возможно ли отключить С-состояния (всегда использовать С0)?
Это возможно, но не рекомендуется. В даташите (секция 4.2.2, страница 64) есть примечание: «Долгосрочная надежность не гарантируется, если все энергосберегающие состояния простоя не включены». Поэтому вам не стоит отключать С-состояния.
P-состояния, управляемые оборудованием
В этом случае ОС знает об аппаратной поддержке P-состояний и отправляет запросы с указанием нагрузки. В запросах не указывается конкретное P-состояние или частота. На основе информации от ОС, а также других факторов и ограничений оборудование выбирает подходящее P-состояние.
Я хочу рассказать об этом подробнее в следующей статье, но сейчас я поделюсь с вами своими мыслями. Мой домашний компьютер работает в этом режиме, я узнал это, проверив IA32_PM_ENABLE. Максимальный (но не гарантированный) уровень производительности — 39, минимальный — 1. Можно предположить, что существует 39 P-состояний. На данный момент уровень 39 установлен ОС как минимальный и как максимальный, потому что я отключил динамическое изменение частоты процессора в ядре.
Что вынуждает ядро входить в определенное С-состояние?
Как отмечалось ранее, переходы между глубокими С-состояниями имеют высокие задержки и высокие энергетические затраты. Таким образом, такие переходы должны выполняться с осторожностью, особенно на устройствах, работающих от аккумуляторов.
Intel vPro
Эта технология позволяет получать доступ к ПК дистанционно. Вкратце, эта технология позволяет IT-специалистам получить доступ к ПК для устранения неполадок в них и защиты. Она работает на базе ядра и на ее функционирование не влияют состояние питания и операционной системы.
- Intel Active Management Technology (AMT — технология удаленного мониторинга ) – позволяет обнаруживать, инвентаризировать, диагностировать, восстанавливать, модернизировать и защищать вычислительные ресурсы, которые включены в сеть. Также с помощью Intel AMT можно изолировать зараженный ПК от других участников сети. Важной особенностью этой технологии является независимость от OC.
- Intel Virtualization Technology (VT — технология виртуализации) – позволяет использовать на одном компьютере несколько независимых разделов и сред. Так IT-специалисты способны повысить надежность системы путем разделения, как на уровне задач, так и на уровне пользователей.
Не будем подробно рассказывать о средствах реализации этих технологий. Об этом вы можете подробнее прочесть здесь.
Как я могу узнать состояние процессора?
Существует не так много приложений, которые могут выводить эту информацию. Но вы можете использовать, например, CoreFreq.
В последнее время сообщество любителей самостоятельной сборки ПК пронизано темой энергопотребления. У новейших восьмиядерных процессоров от Intel показатель TDP заявлен в 95 Вт, однако пользователи наблюдают, как те потребляют 150-180 Вт, что совершенно не имеет смысла. В этой инструкции мы объясним вам, почему это происходит, и почему это доставляет столько проблем авторам обзоров железа.
Intel Authenticate
Эта технология реализована на базе Intel vPro 6-го поколения, и представляет собой многофакторную аутентификацию корпоративного класса, что позволяет улучшить защиту личных данных. Здесь используются несколько разных факторов для проверки личности. Можно и PIN-код, и телефон и отпечаток пальца. Методы проверки выбирает само предприятие в зависимости от условий. Эта технология использует все ключи и связанные с ними сертификаты, шифрует их, сопоставляет и хранит в памяти аппаратной части, что держит их в безопасности от основной массы атак.
Burst
Эта технология применяется в мобильных процессорах Intel Atom (про то, как выбрать мобильный процессор можете прочесть по ссылке), а также в версиях Celeron/Pentium для мобильных устройств. Эта технология очень схожа с Turbo Boost. Она также повышает таковую выше номинальной, если выполняются некоторые условия.
Здесь также есть две версии этой технологии. Только во второй обмен мощностью может быть и с дисплеем, и c графическим чипом, и с системой обработки изображения с камеры, а не только с процессорными ядрами.
Intel Smart Cache
Это технология по использованию общей L2/L3-памяти (кэш-память второго/третьего уровня), что позволяет снизить энергопотребление и повысить производительность. Стоит отметь, что при динамическом отключении ядер другие ядра получают больше кэша.
Оглавление
Состояния питания (C-states) vs состояния производительности (P-states)
Состояния питания (C-states) vs состояния производительности (P-states)
Вот два способа снизить энергопотребление процессора:- отключить некоторые подсистемы;
- снизить напряжение/частоту.
P-состояния описывают второй случай. Подсистемы процессора работают, но не требуют максимальной производительности, поэтому напряжение и/или тактовая частота для этой подсистемы может быть снижена. Таким образом, P-состояния, P[X], обозначают, что некоторая подсистема (например, ядро), работает на заданной паре (частота, напряжение).
Так как большинство современных процессоров состоит из нескольких ядер, то С-состояния разделены на С-состояния ядра (Core C-states, CC-states) и на С-состояния процессора (Package C-states, PC-states). Причина появления PC-состояний очень проста. Существуют компоненты с общим доступом (например, общий кэш), которые могут быть отключены только после отключения всех ядер, имеющих доступ к этому компоненту. Однако мы в роли пользователя или программиста не можем взаимодействовать с состояниями пакета напрямую, но можем управлять состояниями отдельных ядер. Таким образом, управляя CC-состояниями, мы косвенно управляем и PC-состояниями.
Состояния нумеруются от нуля по возрастанию, то есть C0, C1… и P0, P1… Большее число обозначает большее энергосбережение. C0 означает, что все компоненты включены. P0 означает максимальную производительность, то есть максимальные тактовую частоту, напряжение и энергопотребление.
Как прерывания влияют на процессор\ядро в состоянии сна?
Когда происходит прерывание, соответствующее ядро пробуждается и переходит в состояние С0. Однако, например Intel® Xeon® E3-1200 v5, поддерживает технологию Power Aware Interrupt Routing (PAIR), у которой есть два достоинства:
- для энергосбережения прерывание может быть переадресовано работающему ядру, чтобы не будить спящее ядро;
- для производительности прерывание может быть переадресовано от работающего на полную мощность ядра к простаивающему (С1) ядру.
Энергосберегающие технологии
Не надо переживать, я не буду тратить ваше время на изложение десятков мудреных терминов и названий данной области, они все базируются на двух понятиях:
- «Ну дайте выключиться»;
- Ниже напряжение = меньше потребление.
реклама
Первый прием начал широко применяться довольно давно и суть его в простом действии – если схема остановлена, то она потребляет значительно меньше энергии, чем функционирующая, даже в «облегченном» режиме. Сейчас микросхемы изготавливают по CMOS технологии, что подразумевает почти нулевой ток потребления при отсутствии коммутации. Но, как только начинает что-то происходить, сразу следует возрастание тока, и причина этого неприятного последствия заключается в паразитной емкости элементов и трасс внутри микросхемы. При заряде конденсатора на нем запасается энергия C*V^2/2, где С – емкость; V – изменение напряжения. Чем чаще изменяется логический уровень элемента, тем больше энергии циркулирует через ключевые элементы, что вызывает выделение тепла, ведь «ключи» имеют довольно большое внутреннее сопротивление во включенном состоянии.
Второй прием стал применяться относительно недавно, как дополнение к первому - в некоторых случаях можно снижать рабочую частоту простаивающих узлов, что не вызовет потери производительности. Коль скоро снизили частоту, то можно пропорционально к ней поснизить и рабочее напряжение. Чем меньше напряжение и частота, тем ниже как мощность потребления, так и «фоновый» ток утечки по полупроводниковому кристаллу.
Рассмотрим один пример. Положим, в некоторой шине был уровень «0» и требуется передать логическую единицу.
На данном рисунке отмечены основные элементы передатчика:
- Q1, Q2 – выходные ключи;
- C1 – паразитная емкость ключей, окружающих элементов и трассировки вокруг узла передатчика сигнала;
- T1 – шина передачи сигнала;
- U – приемник.
Работает схема следующим образом. Конденсатор С1 разряжен, открывается ключ Q1 и замыкает его на питание (Vcc). При этом конденсатор начинает заряжаться через включенный транзистор Q1, который имеет довольно большое сопротивление. Напряжение на конденсаторе возрастает до уровня Vcc, отсюда можно вычислить накопленную в нём энергию. Сам переходной процесс протекает время R*C, где «R» - сопротивление ключа Q1; «C» - номинальная емкость конденсатора C1. По прошествии переходного процесса напряжение на конденсаторе С1 установится в постоянное значение (Vcc) и в дальнейшем изменяться не будет. Это означает, что ток в схеме перестанет куда либо ‘течь’ и узел перестанет потреблять мощность из источника питания. При смене уровня на «логический 0» происходят схожие процессы, только при этом закрывается транзистор Q1 и открывается Q2, что приводит к «закорачиванию» конденсатора С1 на землю и вся накопленная в нём энергия израсходуется на нагрев внутреннего сопротивления включенного транзистора Q2. Иначе говоря, чем чаще происходит смена уровня, тем больше потребляется мощность из источника питания, и эта зависимости линейная. С другой стороны, энергия, накапливаемая на конденсаторе, пропорциональна квадрату напряжения, поэтому даже небольшое снижение разности уровней «логического 1» и «логического 0» приводит к существенной экономии затрат.
Данный пример характеризует работу обоих приемов энергосбережения:
- Если узел не переключается, то на перезарядку конденсатора С1 не тратится мощность;
- Энергия, накапливаемая на конденсаторе С1 пропорциональна квадрату разности напряжений «0» и «1», а потому снижение этих величин весьма чувствительно понижает расходуемую мощность.
Режим остановки узлов процессора инициируется операционной системой. Для процессоров, точнее ядер, существует несколько состояний. Обязательными являются два – нормальный режим работы «С0» и простой «С1». Состояние остановки требуется любой операционной системе, ведь не всегда есть что выполнять и процессор надо останавливать. Для «усыпления» используется специальная команда «hlt» (MWAIT), по которой процессор останавливает выполнение программы. Интересно, что программно вывести его из этого состояния нельзя и он может находиться в нем неограниченное время. К слову, как же тогда работает ОС, если процессор усыплен и не может быть разбужен с помощью программы? (Да и о какой «программе» может идти речь, если инструмент ее выполнения, процессор, спит.) Все просто, процессор просыпается по любому (незамаскированному) аппаратному прерыванию. Один из основных движущих элементов в работе ОС – это аппаратный таймер, который задает «тик» работы системы. Период его работы зависит от операционной системы и имеет величину порядка 1 мс. Итак, если выдать hlt, то процессор уснет и будет разбужен следующим тиком таймера или любым прерыванием от аппаратуры компьютера (дисковая система, клавиатура, видеокарта и другое). Поэтому процесс работы процессора выглядит как циклическое выполнение следующих стадий:
- Выполнить имеющиеся задания;
- hlt = усыпили;
- (сон);
- Аппаратное прерывание = разбудили.
реклама
При описывании состояний процессора я упорно избегал определения «С1E», довольно часто встречаемого в настройках BIOS. Наверно, пришло время обсудить это «особое» состояние. Работающее ядро находится в состоянии «С0», усыпленное командой «hlt» в «С1», откуда взялось «С1E»? Это то же состояние «С1», но при этом снижается его напряжение и частота. Гм, не находите, довольно любопытно обсуждать частоту усыпленного ядра, если оно не работает? Да нее, смысл есть - сразу по пробуждении ядро будет работать на этой пониженной частоте до тех пор, пока не восстановится нормальное напряжение и появится возможность восстановить и частоту. Впрочем, об этом поговорим попозже. Проблема в том, что оказаться усыпленными и отключенными могут не все, а только некоторые ядра, а потому состояние «процессора» (не путайте с «ядром») не является столь уж очевидным. Ранее приводился пример с одним активным, одним уснувшим и несколькими отключенными ядрами. При этом состояние «процессора», с точки зрения переключения мощности, будет «активным», хоть часть ядер «спят». Довольно несуразно, но это происходит из того факта, что на процессор делают только один источник питания, а потому устанавливать разные напряжения для различных ядер невозможно. Сколько бы ядер ни «спало» и насколько «сильно» - это не важно, контроллер источника питания обязан обеспечить тот уровень напряжения, чтобы работающее ядро обеспечило нормальное функционирование.
Состояние «С1E» может быть отключено в BIOS, тогда ядра (и весь процессор) по команде «уснуть» от операционной системы будут переходить в состояние «С1». Иначе – в «С1Е». С точки зрения функционирования особых отличий между «С1» и «С1E» нет, кроме того, что в последнем устанавливается низкое напряжение – снижается мощность потребления.
В нормальном режиме работы ядра могут находиться в различном состоянии, но весь процессор только в двух - «активном» и «усыпленном» «С1х». Операционная система при работе не может отключить все ядра, хоть одно, но останется «не отключенным» – а потому состояния выше «С1х» для всего процессора не применяются и используются только для режима «сна» и «выключения» всей операционной системы (компьютера).
Зачем же нам нужны состояния отключения («С3»- «С7»), если в них могут попадать только ядра, а не весь процессор? Из-за функции турборазгона. Intel продвигает технологию автоматического разгона процессора, если в нём работают не все ядра. Довольно логично, ведь «TDP» на процессор прописан достаточно четко и превышать его нельзя. Но, коль скоро работают не все ядра, то оставшиеся можно подразогнать, с одновременным повышением напряжения - «TDP» превышен не будет, а программа станет выполняться быстрее. Для описания меры авторазгона составляется список «количество активных ядер» = «множитель» и контроллер процессора сам переустанавливает множитель на ядра в зависимости от их состояния. К чему я? Так вот, активными считаются ядра в состоянии «С0» - «С1х». А значит, для повышения производительности процессора операционная система должна отправлять неиспользуемые ядра не в «сон», а в «отключение» (С3-С7), иначе «турборазгон» окажется весьма спорным.
Кроме разной степени «усыпления» операционная система может снижать потребление и для активных ядер (состояние «С0») путем изменения (понижения) частоты их работы. При этом снижается как производительность, так и мощность потребления. Довольно неприятно терять скорость работы, но разве она кому-то нужна, если процессор практически ничего не делает?
Читайте также: