Технологии: "C-States и P-States в процессорах" основные принципы работы
C-States и P-States — состояния центрального процессора, предназначенные для экономии электроэнергии в простое и неполной нагрузке. Как они устроены, и как работают? Нужна ли им настройка, или в их функционирование лучше не вмешиваться?
Что такое C-States и P-States
Для начала определимся, что из себя представляют герои нашего материала и в чем различия между ними.
C-States — сокращение от «Core States», или «Состояния ядра». Когда процессор не занят вычислительной работой и находится в простое, эти состояния позволяют отключать или переводить в режим пониженного энергопотребления его различные компоненты. Например, тактовый генератор частоты, кэш и шины.
P-States — сокращение от «Performance States», или «Состояния производительности». Во время выполнения процессором вычислений эти состояния позволяют динамически изменять частоты его ядер, кэша и шин, а также питающее их напряжение. За счет этого при неполной нагрузке ЦП достигается экономия энергии.
Проще всего привести аналогию с движущимся автомобилем. P-States напоминает работу автоматической коробки передач: чем больше нужна скорость для выполнения задачи, тем на более высокую ступень этот механизм переключает частоту (а вместе с ней — и напряжение питания) компонентов центрального процессора.
А C-States можно сравнить с автомобилем, который стоит на месте, но должен быть в любой момент готовым к поездке. Самое поверхностное из этих состояний можно описать так: автомобиль заведен, а водитель сидит за рулем и уже выжимает газ, ожидая лишь момента нажать на сцепление. Второе состояние подразумевает, что газ не выжат, следующее — что автомобиль не заведен, а самое глубокое — что водитель еще даже не сел за руль. В соответствии с этим меняется и скорость старта автомобиля (т.е. процессора): чем глубже C-состояние, тем больше времени требуется ЦП для возвращения к работе из него.
C-States: краткая история
На заре своего появления центральные процессоры для компьютеров были устроены достаточно просто и работали на низких частотах. За счет этого они потребляли небольшое количество энергии, поэтому задача по снижению энергопотребления в простое перед производителями тогда не стояла. Однако уже в процессоре Intel 8086, который дебютировал в 1978 году, появилась команда «Halt». Она приостанавливала его работу до тех пор, пока не возникнет аппаратное прерывание — то есть, была в первую очередь необходима для правильного функционирования ЦП.
В 1993 году, с появлением процессоров 486DX4 и Pentium, команда «Halt» стала использоваться и для снижения энергопотребления в простое благодаря новому состоянию — C1. В нем процессор прекращает выполнять инструкции и уходит в неглубокий «сон», но при необходимости может мгновенно «проснуться» и вернуться в рабочее состояние (C0).
Одновременно было добавлено и второе состояние энергосбережения — C2 (Stop-Clock). В нем тактовый генератор частоты ядра останавливается, обеспечивая ему более глубокий «сон», но при этом сохраняется состояние регистров и кэш-памяти. Особенно актуальны эти состояния были для «прожорливых» Pentium: в отличие от предшественников, под нагрузкой они потребляли в несколько раз больше — до 16 Вт вместо пяти-шести.
С каждым годом процессоры становились сложнее, а вместе с этим росло и их энергопотребление. У Intel оно наиболее сильно взлетело с выходом Pentium 4: 90–100 Вт после 30–40 Вт у двух прошлых поколений ЦП были не шуткой. Именно тогда компания задумалась о дальнейшем совершенствовании C-состояний. Их следующее поколение появилось в последнем поколении Pentium 4 на ядре Prescott, и получило название «Enhanced Halt State» (C1E).
В отличие от C1, C1E не только приостанавливает выполнение инструкций, но еще и снижает напряжение и частоту ядра. Это позволяет экономить гораздо больше энергии в простое, понижая потребление процессора до нескольких раз. При этом выход из данного состояния был лишь чуть медленнее, чем из C1, и намного быстрее, чем из C2.
Однако для ноутбуков даже со всеми «энергосберегайками» архитектура Pentium 4 была слишком прожорливой. Поэтому Intel разработала для них отдельную линейку процессоров Pentium M, корни которых уходили в архитектуру более старого Pentium III.
Чтобы увеличить время работы мобильных ПК в простое, помимо другой архитектуры эти процессоры наделили еще более «глубокими» режимами сна — C3 и C4. Оба состояния схожи с C2, но в первом отключается кэш (его содержимое переносится в ОЗУ), а во втором, вдобавок к этому, еще и снижается напряжение на ядре.
С дальнейшим развитием процессоров появлялись следующие, более глубокие C-состояния. В каждом из них ЦП потребляли все меньше энергии, но взамен увеличивалось время, необходимое для возвращения к работе. Краткая информация о всех C-States представлена в таблице ниже.
С появлением архитектуры Intel Core каждое из ядер процессора получило возможность менять свое C-состояние независимо. А с объединением всех ядер в одном кристалле, которое произошло с дебютом первого поколения Core i7, Intel ввела понятие PC-States (PaСkage States). Эти состояния аналогичны C-States, но используются не для отдельных ядер, а на уровне всего процессорного пакета. При этом отдельные ядра ЦП могут пребывать либо в таком же, либо в более глубоком сне, чем весь пакет. Таким образом экономится дополнительная энергия.
Хотя пионером по вводу новых C-States была Intel, в процессорах AMD схожие состояния появлялись лишь чуть позже. А с приходом Ryzen компания добавила собственные C-States еще и для шины Data Fabric, которая соединяет основные компоненты этих процессоров.
P-States: краткая история
C-States решили вопрос энергопотребления в покое, но даже при частичной нагрузке ранние процессоры продолжали «молотить» на полную мощность. Для десктопов это особого значения не имело, а вот для ноутбуков каждый ватт сэкономленной энергии был на счету.
Первой разработкой, призванной исправить ситуацию, стала технология Intel SpeedStep. Она дебютировала в 2000 году в мобильных Pentium III, позволяя переключаться им между двумя режимами — высокой производительностью и экономией энергии. В последнем из них частота понижалась с помощью уменьшения множителя и снижалось напряжения ядра, но процессор продолжал выполнять работу и не «засыпал».
SpeedStep доказал свою эффективность, однако переключение между режимами было довольно медленным, а взаимодействие операционной системы с ними — не до конца доведенным до ума. К тому же, градаций мощности было всего две. Обе проблемы решило следующее поколение технологии под названием Enhanced Intel SpeedStep Technology (EIST). Оно позволило ЦП быстро и более плавно подстраиваться под текущую нагрузку с помощью нескольких сочетаний тактовых частот и напряжений, которые были названы P-States. Впервые эта технология появилась в 2003 году в мобильных процессорах Pentium M.
Уже вскоре EIST довольно быстро мигрировала в десктопные Pentium 4 на ядре Nortwood. Параллельно компания AMD внедрила схожую по принципу работы технологию Cool'n'Quiet в процессоры Athlon 64.
С развитием процессоров количество P-States росло, а диапазон переключаемых ими частот расширялся. Если в 2003 году у первых моделей их было от двух до шести, то уже в 2011 процессоры Intel Core второго поколения научились регулировать свою частоту с шагом в 100 МГц. Это давало от 15 до 20 различных P-состояний.
Следующая глава в развитии P-States начинается в 2015 году с дебютом Intel Core шестого поколения. На смену EIST в них пришла технология SpeedShift. В отличие от предшественницы, P-состояниями которой управляла операционная система, новая технология полагается на собственные алгоритмы обнаружения нагрузки. Это позволяет процессору более оперативно реагировать на изменяющиеся условия и заметно быстрее переключать P-состояния для достижения как максимальной производительности, так и большей энергоэффективности.
Сравнение скорости переключения состояний cо SpeedShift и без него. Обратите внимание, что время дано в миллисекундах — на глаз такой разницы не заметить
В процессорах AMD схожее (и даже более продвинутое) решение появилось в 2018 году вместе с линейкой Ryzen 2000. Комплекс технологий авторазгона Precision Boost Overdrive 2 помимо своей главной задачи научился переключать P-состояния процессора на основе собственных алгоритмов без вмешательства операционной системы.
Когда стоит вмешиваться в работу C- и P-состояний
У всех процессоров, выпущенных за последние 15 лет, работа различных состояний отлажена и не нуждается в дополнительной настройке. Примерно столько же времени в ОС Windows имеются продвинутые алгоритмы управления питанием — начиная с легендарной Windows 7 и заканчивая современной Windows 11. Поэтому просто так лезть в настройки C- и P-состояний в надежде как-то увеличить производительность не стоит. Как минимум, можно нарушить правильный переход процессора в сон, а как максимум — добавить ему «жора» на холостом ходу.
Настройка или отключение перехода в различные состояния может понадобиться в случаях, когда выполняющимся задачам все время нужен максимально быстрый отклик ЦП — ведь и C-, и P-States вносят свою задержку при необходимости его вывода из экономичного режима на полную вычислительную мощность. К таким сценариям можно отнести использование ПК в качестве некоторых видов серверов. Например, для баз данных, задач искусственного интеллекта, IP-телефонии, трейдинга или трансляции потокового видео.
В домашнем применении скорость переключения состояний не вносит заметную задержку в работу системы, приложений или игр. Но поводом вмешательства в них может послужить нестабильная работа ПК. Нередко производители материнских плат «криво» реализуют совместную работу технологий автоматического разгона ЦП и C-States/P-States в прошивке BIOS. А при ручном разгоне подобные проблемы несовместимости выходят наружу еще чаще. Это может проявляться в виде спонтанного зависания или перезагрузки ПК, сбоев работы игр и программ, а также неожиданных «синих экранов».
Однако в ситуациях без ручного разгона в таком поведении компьютера гораздо чаще виноваты другие, более распространенные проблемы. Но если ничего из этого не помогает, то нужно попробовать отключить энергосберегающие состояния: есть шанс, что подобное происходит из-за того, что ЦП и материнская плата плохо «дружат».
На платформах AMD вышеописанные проблемы чаще всего связаны не с самими состояниями энергосбережения, а с механизмом авторазгона PBO. Поэтому перед тем, как лезть непосредственно в настройки C- и P-States, попробуйте сначала отключить только Precision Boost Overdrive. Вполне возможно, что дальнейшие манипуляции не потребуются.
Как отключить C- и P-состояния
Для этой цели понадобится попасть в BIOS. Перезагружаем ПК, и нажимаем на клавиатуре Delete, F2 или Esc — в зависимости от производителя и модели вашей материнской платы.
BIOS разных производителей отличаются оформлением и положением пунктов настроек. К тому же, они нередко меняются местами даже в разных поколениях плат от одного и того же производителя. Впрочем, найти необходимые нам пункты не так уж трудно. В современных моделях контроль режимов C-состояний чаще всего находится по следующим путям:
Gigabyte (платформы Intel): Advanced (или Tweaker) → CPU Settings → C-States Control
Gigabyte (платформы AMD): Advanced (или Tweaker) → CPU Settings → AMD CBS → CPU Common Options → C-States Control
MSI (платформы Intel): Overclocking (OC) → Advanced CPU Configuration → CPU C-States
MSI (платформы AMD): Overclocking (OC) → Advanced → AMD CBS → CPU C-States
ASUS/ASRock (платформы Intel): Advanced → CPU Configuration → CPU Power Management Control → CPU C-States
ASUS/ASRock (платформы AMD): Advanced → CPU Configuration → CPU Power Management Control → Global C-State Control
В тех же разделах можно найти и контроль механизма работы P-состояний. У процессоров Intel ищите пункты SpeedShift и EIST, у AMD - AMD P-States или Cool'n'Quiet.
Отключить C-состояния полностью можно на любой материнской плате — для этого достаточно нажать клавишу «Enter» на нужном пункте и выбрать «Disabled/Запрещено»
На большинстве плат переход в различные C-состояния можно контролировать индивидуально. Обычно для этого нужно сменить в той же графе режим «Auto/Авто» на «Enabled/Разрешено». После этого становится доступным отключение поддержки различных состояний ядер по-отдельности.
Вдобавок там же нередко присутствует настройка «Package C State». С ее помощью можно переопределить самое глубокое состояние, в которое может уходить весь пакет ЦП. То есть — максимальный PC-State.
P-состояния процессора BIOS (за редким исключением) не позволяет настраивать по отдельности, можно лишь запретить переход в них в общем. Для этого достаточно выбрать в вышеописанных пунктах настроек вариант «Disabled/Запрещено». У современных материнских плат для платформ Intel пункты SpeedShift и EIST могут сосуществовать вместе — в этом случае нужно деактивировать их оба.
Закончив манипуляции, нажимаем клавишу F10 и соглашаемся сохранить изменения. Теперь все аппаратные «энергосберегайки» отключены. А чтобы Windows не пыталась снизить частоту процессора программным способом, в настройках электропитания устанавливаем режим «Высокая производительность».
Если полное отключение энергосберегающих состояний решило вашу проблему, не спешите оставлять настройки в таком состоянии. В большинстве случаев достаточны лишь частичные меры по предотвращению перехода процессора в глубокий сон. Поэтому после этого попробуйте отключить лишь состояния C6 и выше — в них проблемы кроются чаще всего. Механизм P-состояний в BIOS обычно отключают только при разгоне. А состояния с C1 до C3, как правило, приводят к ошибкам реже всего.
Итоги
C-States и P-States — технологии энергосберегающих состояний, которые помогают центральному процессору подстраиваться под нужную нагрузку и не «кушать» лишнее электричество. В современных ЦП их работа очень точна и помогает сэкономить каждый лишний ватт. Это особенно важно для использования в ноутбуках — ведь именно данные «фишки» значительно продлевают им время автономной работы.
Несмотря на это, в ряде случаев C- и P-состояния приходится отключать. В основном это требуется, чтобы использовать компьютер в качестве сервера для работы с задачами реального времени. Но иногда может понадобиться в обычном домашнем ПК, чтобы решить проблему с нестабильной работой системы — чаще всего в разгоне, но иногда и в номинале.