Чем ограничена частота процессора
Большинство современных процессоров используют различные технологии энергосбережения, такие как Intel SpeedStep или AMD Cool’n’Quiet. Эти технологии основаны на динамическом изменении частоты работы процессора в зависимости от нагрузки с целью снижения энергопотребление и тепловыделения.
Для понимания рассмотрим общие принципы работы данных технологий.
У процессора есть состояния производительности (P-States), которые представляют из себя комбинацию множителя частоты (Frequency ID, FID) и напряжения питания (Voltage ID, VID). Тактовая частота работы процессора получается путем умножения частоты системной шины (FSB) на FID, соответственно чем больше множитель, тем выше частота, и наоборот. Количество поддерживаемых состояний зависит от характеристик процессора (макс. частота, множитель и т.п.).
В ходе первоначальной загрузки в BIOS создается описание возможных состояний производительности. Это описание в соответствии с интерфейсом ACPI считывается операционной системой при запуске. В процессе работы операционная система отслеживает загрузку процессора, при снижении нагрузки обращается к драйверу процессора и переводит процессор в пониженное состояние. Снизив частоту и напряжение, процессор будет потреблять меньше энергии и, соответственно, меньше нагреваться. Ну а при увеличении нагрузки операционная система опять запросит изменение состояния процессора, но уже в большую сторону.
Когда и в какое из состояний переводить процессор, операционная система решает автоматически, в соответствии с текущей политикой энергосбережения. Но, кроме этого, в Windows есть возможность вручную задать диапазон регулировки, ограничив минимальное и максимальное состояние.
В моем компьютере стоит Intel Core I7 4790К. Согласно спецификации, он имеет базовую частоту 4ГГц, а с использованием технологии Turbo Boost может разгоняться до максимальных 4.4ГГц. Для того, чтобы посмотреть текущую скорость работы процессора, запустим «Диспетчер задач» (Ctrl+Shift+Esc) и перейдем на вкладку «Производительность». Как видите, на данный момент нагрузка невелика и процессор работает вполсилы, частота его работы составляет 1.84ГГц.
Попробуем немного покрутить настройки частоты процессора и посмотрим, что из этого получится. Для запуска оснастки управления электропитанием жмем клавиши Win+R и выполняем команду powercfg.cpl.
В открывшемся окне выбираем текущую схему электропитания, переходим по ссылке «Настройка схемы электропитания»
и жмем на ссылку «Изменить дополнительные параметры питания».
За частоту работы процессора отвечают параметры «Минимальное состояние процессора» и «Максимальное состояние процессора», находящиеся в разделе «Управление питанием процессора».
Обратите внимание, что у ноутбуков для каждого параметр доступны два варианта настроек. Первый отвечает за частоту процессора при автономной работе (от батареи), второй — при работе от сети.
Проверим, как влияет изменение настроек на частоту работы процессора. Для начала уменьшим максимальное состояние до 20% и проверим результат. Как видите, частота работы снизилась до примерно 0.78ГГц, что как раз составляет примерно 20% от базовой частоты.
Что интересно, снизить частоту ниже 20% мне это не удалось. При выставлении значения ниже 20% частота продолжает оставаться на том же уровне, т.е. для моего процессора 800МГц является минимальной поддерживаемой частотой.
Чтобы разобраться, почему так, запустим диагностическую утилиту CPU-Z. Как видите, в нашем случае частота шины составляет 100МГц, а множитель изменяется в диапазоне от 8 до 44. Отсюда и получаем возможность изменения частоты от минимальных 800МГц до максимума 4.4ГГц с шагом в 100МГц.
Но переключение осуществляется не по каждому множителю, а более дискретно. Другими словами, количество состояний производительности не соответствует количеству значений множителя. Посмотреть все доступные состояния можно утилитой RightMark Power Management. Например для испытуемого процессора доступно всего 15 состояний, а переключения между ними происходят с переменным шагом 200-300МГц.
Ну а на что влияет минимальная частота процессора? Для проверки установим значение минимальной частоты в 100% и убедимся, что скорость работы процессора сразу поднялась почти до максимуму и достигла 4.3ГГц. И это при том, что загрузка процессора составила всего 14%.
Есть еще одна настройка, отвечающая за частоту работы процессора. По умолчанию она скрыта и для того, чтобы увидеть ее, необходимо произвести некоторые манипуляции в реестре. Поэтому открываем редактор реестра (Win+R ->regedit), переходим в раздел HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Power\PowerSettings\54533251-82be-4824-96c1-47b60b740d00\75b0ae3f-bce0-45a7-8c89-c9611c25e100, находим параметр Attributes и изменяем его значение на 2.
После этого в окне настроек появится параметр «Максимальная частота процессора». Как следует из названия, этот параметр отвечает за ограничение максимальной частоты работы процессора, его значение задается в мегагерцах. По умолчанию значение параметра равно 0, что означает отсутствие ограничений.
Установим ограничение в 1500МГц и проверим результат. И действительно, ограничение работает и частота не поднимается выше указанного значения.
Надо понимать, что регулировка частоты работает так-же дискретно, как и в случае с состояниями. Например при выставлении максимальной частоты 1200МГц реальное ограничение будет в районе 1000МГц. Это неудивительно, ведь переключения все равно производятся между P-состояниями, причем выбирается ближайшее минимальное значение.
Изменять дополнительные параметры питания процессора можно и из командной консоли, с помощью утилиты powercfg. Для начала выведем все имеющиеся настройки питания командой:
В полученных результатах надо найти требуемые параметры. Каждый раздел и параметр можно идентифицировать по идентификатору GUID или по псевдониму (алиасу). Например у группы настроек «Управление питанием процессора» GUID 54533251-82be-4824-96c1-47b60b740d00, а псевдоним SUB_PROCESSOR, у параметра «Максимальное состояние процессора» GUID 75b0ae3f-bce0-45a7-8c89-c9611c25e100 и псевдоним PROCTHROTTLEMAX.
Зная нужные алиасы или GUID-ы можно оперировать настройками. Так посмотреть значение параметра «Максимальное состояние процессора» можно такой командой (SCHEME_CURRENT означает текущую схему электропитания):
powercfg /query SCHEME_CURRENT SUB_PROCESSOR PROCTHROTTLEMAX
В командной значения параметра показаны в шестнадцатеричном виде, т.е. значение 0x00000064 означает 100%.
Обратите внимание, что в командной строке доступны настройки как для питания от сети, так и от батареи. В зависимости от требуемого варианта команда будет отличаться. Так за настройку питания от сети отвечает ключ /SETACVALUEINDEX, а для питания от батареи используется ключ /SETDCVALUEINDEX. Различие всего в одной букве, поэтому нужно быть внимательным и постараться их не перепутать. Для примера снизим максимальное состояние процессора для питания от сети до 50%:
powercfg /setacvalueindex CHEME_CURRENT SUB_PROCESSOR PROCTHROTTLEMAX 50
Проверим результат. Как видите, текущее значение составляет 0x00000032 (50%).
Итак, мы убедились в том, что регулировки частоты работы процессора в Windows 10 есть и даже работают. Но для того, чтобы получить от них положительный эффект, необходим грамотный подход. Первым делом необходимо определиться с тем, что вы хотите получить в результате — поднять производительность, увеличить время автономной работы, снизить температуру или что-то еще. Затем надо выяснить основные параметры своего процессора, такие как частота шины, множитель, максимальная частота работы. И уже исходя из этого, опытным путем подобрать оптимальные для себя значения.
Как центральный процессор может сокращать собственное энергопотребление? Основы этого процесса — в статье.
Центральный процессор (CPU) спроектирован на бесконечно долгую работу при определенной нагрузке. Практически никто не проводит вычисления круглые сутки, поэтому большую часть времени он не работает на расчетном максимуме. Тогда какой смысл держать его включенным на полную мощность? Здесь стоит задуматься об управлении питанием процессора. Эта тема включает в себя оперативную память, графические ускорители и так далее, но я собираюсь рассказать только про CPU.
Если вы знаете про C-состояния (C-states), P-состояния (P-states) и то, как процессор переходит между ними, то, возможно, в этой статье вы не увидите ничего нового. Если это не так, продолжайте читать.
Я планировал добавить реальные примеры из ОС Linux, но статья становилась все больше, так что я решил приберечь это для следующей статьи.
Основные источники информации, использованные в этом тексте:
Возможно ли отключить С-состояния (всегда использовать С0)?
Это возможно, но не рекомендуется. В даташите (секция 4.2.2, страница 64) есть примечание: «Долгосрочная надежность не гарантируется, если все энергосберегающие состояния простоя не включены». Поэтому вам не стоит отключать С-состояния.
P-состояния
P-состояния подразумевают, что ядро в состоянии С0, потому что ему требуется питание, чтобы выполнять инструкции. P-состояния позволяют изменять напряжение и частоту ядра (другими словами рабочий режим), чтобы снизить энергопотребление. Существует набор P-состояний, каждое из которых соответствует разных рабочим режимам (пары напряжение-частота). Наиболее высокий рабочий режим (P0) предоставляет максимальную производительность.
Процессор Intel® Xeon® E3–1200 v5 позволяет контролировать P-состояния из операционной системы (Intel® SpeedStep Technology) или оставить это оборудованию (Intel® Speed Shift Technology). Вся информация ниже специфична для семейства Intel® Xeon® E3-1200 v5, но я полагаю, это в той или иной степени актуально и для других современных процессоров.
Причина 1: Отсутствие нагрузки
Прежде чем грешить на CPU и рассуждать, почему тот не работает на полную, следует посмотреть, есть ли ему нужда задействовать свою мощь в полном объёме. По умолчанию он не обязан использовать всю, даже номинальную частоту, если никакое приложение того не требует. Главный вычислительный элемент при этом «отдыхает» или же находится в режиме простоя, что сохраняет пользователя от чрезмерных трат электроэнергии, ЦПУ не греется лишний раз, чтобы не «мучить» систему охлаждения.
В той ситуации, когда ваш процессор не нагружен, то показатель его частоты может находиться на уровне номинальной заявленной производителем или даже ниже. Например, если процессор обладает базовой скоростью в 3,70 ГГц, это не помешает ему снизить её до 2,50 ГГц и меньше (до минимальных 800 МГц), при отсутствии надобности в более высоких частотах, например, когда CPU не загружен и на 5%.
Ничего страшного в пониженной частоте из-за простоя для системы нет. Компьютер сам возьмёт нужную мощность, когда та потребуется.
Где может пригодиться управление частотой?
- Есть мнение, что когда процессор постоянно работает на высокой частоте и не скидывает ее — то комп будет работать быстрее. Так это или нет — сказать не могу. Однако я вроде как разницы не заметил.
- В особо жаркое время лета, в квартире без кондишина и при высокой температуре проца даже при офисных задачах — есть смысл ограничить частоту либо заморочиться по поводу охлаждения. Да, идеал — водяное, хотя когда в комнате 30 градусов и более..
- При разгоне проца оверлокеры советуют отключить любое автоматическое снижение частоты в простое.
- Вы хотите собрать бесшумный медиацентр. Выход — купить офисный проц, какой-то Пентиум, снизить ему частоту в трое/двое — греться не будет, потребляет оч мало энергии, в итоге активное охлаждение не нужно.
- Иногда дешевые материнки якобы поддерживают мощные процессоры. Когда материнка стоит НАМНОГО дешевле проца. Чтобы такой проц работал корректно — снижаем частоту в Windows. Ибо у дешевых материнок нет норм питания для мощных процов. Правда до загрузки Windows проц будет работать на полной частоте, тут уже нужно думать…
Насколько корректно работает уменьшение частоты?
Уже третий день проц работает на пониженной частоте, в диспетчере видно что загрузка выше определенного процента — не поднимается, так как частота ограничена.
Если быть точнее — то ограничивается не частота, а производительность. Однако в диспетчере можно увидеть — если например вы уменьшили производительность на 50%, то частота проца не будет поднимать больше чем на 50%. То есть по сути настройка позволяет регулировать частоту.
Главное — частота снижена и подымается, температура стала меньше. Все работает стабильно!
Состояния питания (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 означает максимальную производительность, то есть максимальные тактовую частоту, напряжение и энергопотребление.
С-состояния
Вот базовые С-состояния (определенные в стандарте 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 суб-состояний и поэтому не используются в моем процессоре. Остальные процессоры из семейства могут поддерживать эти состояния.
Как я могу узнать состояние процессора?
Существует не так много приложений, которые могут выводить эту информацию. Но вы можете использовать, например, CoreFreq.
Многие, наверное, помнят, какими темпами увеличивалась тактовая частота микропроцессора в 90-х и начале 2000-х годов. Десятки мегагерц стремительно переросли в сотни, сотни мегагерц почти мгновенно сменились цельным гигагерцем, затем гигагерцем с долями, двумя гигагерцами и т.д.
Но последние несколько лет частота уже не растет так быстро. От десятка гигагерц мы сейчас почти так же далеки, как и 5 лет назад. Так куда же исчез прежний темп? Что препятствует, как и раньше, «задирать» частоту вверх?
Текст ниже ориентирован на людей, не знакомых или слабо знакомых с архитектурой микропроцессора. Для подкованных читателей рекомендуются соответствующие посты yurav
«Горячие» гигагерцы
Бытует мнение, что дальнейший рост тактовой частоты непременно связан с увеличением тепловыделения. То есть, вроде как, ничего не мешает просто повернуть в нужную сторону некоторый «рубильник», отвечающий за увеличение частоты, – и частота пойдет вверх. Но процессор при этом нагреется настолько, что расплавится.
Это мнение поддерживается множеством людей, имеющих какое-то отношение к компьютерной технике. К тому же подтверждается успехами оверклокеров, разгоняющих процессоры в два и более раз. Главное – поставить систему охлаждения помощнее.
Хотя упомянутый «рубильник» и связанная с ним проблема тепловыделения действительно существуют, — это только часть битвы за гигагерцы…
Главный тормоз
У различных микропроцессорных архитектур могут быть различные сложности с «разгоном». Для определенности, мы здесь будем говорить о суперскалярных архитектурах. К таковым относится, например, архитектура x86 – самая популярная среди разработок компании Интел.
Чтобы понять проблемы, связанные с подъемом тактовой частоты, необходимо сначала определить, во что упирается ее рост. На разных уровнях рассмотрения архитектуры можно выделить различные наборы параметров, ограничивающих частоту. Однако оказывается, что существует такой уровень, на котором есть только один такой параметр. То есть можно выделить всего один тормоз, который надо дополнительно приотпускать каждый раз, когда охота разогнаться.
Конвейер
Главный тормоз лежит на уровне конвейера. Конвейер – это сердце суперскалярной архитектуры. Его суть состоит в том, что исполнение каждой инструкции микропроцессора разбивается на стадии (см. рисунок).
Стадии следуют друг за другом во времени, причем каждая из них исполняется на отдельном вычислительном устройстве.
Как только исполнение некоторой стадии завершается, освободившееся вычислительное устройство может быть задействовано для исполнения аналогичной стадии, но уже другой инструкции.
На рисунке показано, как в период времени t1 на первом вычислительном устройстве исполняется первая стадия первой инструкции. К началу периода t2 первая стадия уже выполнена, и поэтому можно переходить к исполнению второй стадии на втором устройстве. Первое устройство при этом освобождается, и его можно отдать под первую стадию уже другой инструкции. И так далее. В период времени t4 на конвейере одновременно будут исполняться различные стадии четырех инструкций.
Но какое отношение все это имеет к частоте? Оказывается, что самое непосредственное. В действительности различные стадии могут отличаться по длительности исполнения. При этом разные стадии одной и той же инструкции исполняются в отдельных тактах. Продолжительность такта (а с ней и частота) микропроцессора должна быть такой, чтобы в него уместилась самая длинная стадия. На рисунке, приведенном ниже, самой длинной изображена стадия 3.
Делать такт короче самой долгой стадии не имеет смысла. Технически это возможно, однако не приведет к реальному ускорению работы микропроцессора.
Предположим, что самая длинная стадия требует для исполнения 500пс (пикосекунд) времени. Это длительность такта в машине с частотой 2ГГц. Допустим теперь, что мы хотим сделать такт в два раза короче – 250пс. Просто так… Ничего, кроме частоты, менять не собираемся. Такой ход приведет только к тому, что проблемная стадия будет исполняться два такта, но по времени это будут все те же 500пс. К тому же значительно возрастут сложности проектирования и увеличится тепловыделение процессора.
Можно было бы возразить, что благодаря более короткому такту, быстрее начнут «пролетать» короткие стадии, и значит, возрастет средняя скорость вычислений. Однако это не так (см. рисунок).
Поначалу вычисления действительно пойдут быстрее. Но уже с четвертого такта третья стадия и любые следующие за ней (в нашем примере – только четвертая) начнут задерживаться. Это произойдет из-за того, что третье вычислительное устройство будет освобождаться не каждый такт, а каждые два такта. Пока оно занято третьей стадией одной инструкции, аналогичная стадия другой инструкции не может быть исполнена. Таким образом, наш гипотетичский процессор с длиной такта в 250пс эффективно будет работать как процессор с тактом в 500пс, хотя формально его частота будет в два раза выше.
Чем мельче, тем лучше
Итак, с точки зрения конвейера, тактовая частота может быть повышена только одним способом – за счет уменьшения длительности самой долгой стадии. Если удается сократить самую долгую стадию, появляется возможность уменьшить такт до размера той стадии, которая станет самой длинной после проведенного сокращения. А чем короче такт, тем выше частота.
В рамках современных технологий, существует не так много способов, которыми можно воздействовать на размер стадии.
Один из таких способов – переход к более совершенному технологическому процессу. Грубо говоря, очередное уменьшение количества нанометров. Чем мельче составные части процессора, тем быстрее он работает. Происходит это за счет того, что сокращаются расстояния, которые необходимо преодолевать электрическим импульсам, сокращается время переключения транзисторов и пр. Упрощенно можно считать, что всё равномерно ускоряется. Примерно равномерно сокращаются длительности всех стадий, в том числе и самой долгой. Частоту после этого можно поднять.
Звучит довольно просто, однако продвижение вниз по шкале нанометров – процесс очень непростой. Он очень сильно зависит от современного уровня технологий, и дальше, чем позволяет этот уровень, шагнуть нельзя. Тем не менее, производители микропроцессоров постоянно совершенствуют технологический процесс, и частота за счет этого постепенно ползет вверх.
Порезать пациента
Другой способ поднять частоту – это «порезать» самую проблемную стадию на более мелкие. Ведь когда-то инструкции уже удавалось мельчить на стадии. И удавалось многократно. Почему бы не продолжить нарезку? Процессор после этого будет работать только быстрее!
Будет. Однако резать очень сложно.
Приведем аналогию со строительством домов. Дома строятся этаж за этажом. Пусть этаж будет аналогией инструкции. Мы хотим разбить строительство этажа на стадии. Для начала, пусть это будут две стадии: собственно строительство и отделка. Пока происходит отделка на последнем построенном этаже, ничто не мешает приступить к строительству нового этажа. Главное, чтобы строительством и отделкой занимались две разные бригады. Вроде, все хорошо.
Теперь мы хотим пойти дальше и помельчить уже имеющиеся две стадии. Отделку, допустим, можно разбить на поклейку обоев и покраску потолков. С таким разделением нет никаких проблем. После того, как маляры покрасили один этаж, они могут идти на следующий, даже если на предыдущем все еще идет поклейка обоев.
Та же самая проблема имеется и в микропроцессорах. Существуют стадии, которые цепляют инструкции друг за друга. Дробить такие стадии на более мелкие очень тяжело. Для этого нужны очень серьезные изменения в архитектуре процессора. Точно так же, как серьезные изменения нужны в строительстве для того, чтобы одновременно строить несколько этажей одного дома.
Повернуть рубильник
Вот мы и добрались до того, чем занимаются оверклокеры. Они поднимают напряжение, под которым работает процессор. За счет этого быстрее начинают переключаться транзисторы (основные элементы, из которых состоит процессор), и длины всех стадий более-менее равномерно сокращаются. Появляется возможность поднять частоту.
Очень просто! Но есть большие проблемы с тепловыделением. Упрощенно, выделяемая процессором мощность описывается следующим образом:
P ~ Cdyn*V 2 *f
Здесь Cdyn – динамическая емкость, V – напряжение, f – частота процессора.
Неважно, если вы не знаете, что такое динамическая емкость. Главное здесь – напряжение. Оно в квадрате! Выглядит ужасно…
На самом деле, все еще хуже. Как я уже сказал, напряжение нужно, чтобы заставить быстрее работать транзисторы. Транзистор – это своеобразный переключатель. Для того, чтобы переключиться, ему необходимо накопить достаточный заряд. Время такого накопления пропорционально току: чем он больше, тем быстрее на транзистор приходит заряд. Ток, в свою очередь, пропорционален напряжению. Таким образом, скорость срабатывания транзистора пропорциональна напряжению. Теперь обратим внимание на то, что частоту процессора мы можем увеличить лишь пропорционально увеличению скорости срабатывания транзисторов. Суммируя сказанное, имеем:
f ~ V и P ~ Cdyn*V 3
С линейным ростом частоты тепловыделение будет увеличиваться по кубическому закону! При увеличении частоты в 2 раза, необходимо будет отвести от процессора в 8 раз больше тепла. Иначе он расплавится.
Очевидно, такой способ увеличения частоты не очень подходит для производителей процессоров из-за низкой энергоэффективности, хотя и используется разгонщиками-экстремалами.
И это все?
И это все. Ну или почти все. Кто-то мог бы вспомнить, что ему удавалось слегка увеличить тактовую частоту микропроцессора даже без поднятия напряжения.
Такое тоже возможно, однако в очень ограниченных пределах. Процессоры рассчитаны производителем на то, чтобы эксплуатироваться в широком диапазоне внешних условий (которые влияют на длину стадии), поэтому производятся с некоторым запасом по частоте. Например, самая длинная стадия может занимать не целый такт работы процессора, а скажем, 95% такта. Отсюда и возможность незначительно повысить частоту.
Кстати, я ни в коем случае не призываю никого заниматься самостоятельным разгоном процессоров. Все, кто им занимается, делают это на свой страх и риск. Неправильно проводимый разгон опасен не только для ваших процессоров, но и для вас лично!
Отмечу также, что помимо описанных, существуют и другие способы воздействовать на длину стадии. Но они гораздо менее существенны, чем представленные здесь. Например, изменение температуры влияет на работу электроники в целом. Однако серьезные эффекты достигаются только при очень низких температурах.
В общем и целом, получается, что за повышение частоты бороться очень тяжело… Тем не менее, эта битва постепенно ведется, и частота потихонечку ползет вверх. При этом грустить из-за того, что процесс замедлился, не приходится. Ведь появилась такая штука как многоядерность. И какая, в сущности, нам разница, стал наш компьютер работать быстрее из-за того, что поднялась его частота, или потому, что задачи стали исполняться в параллель? Тем более что во втором случае мы получаем дополнительные возможности и бОльшую гибкость…
Привет бро Сегодня у нас необычная тема, полезная и.. как оказалось — задачу ограничения частоты процессора решить достаточно легко!
Скажу сразу — теоретически способ подходит и для процов АМД и для Интел.
P-состояния, управляемые оборудованием
В этом случае ОС знает об аппаратной поддержке P-состояний и отправляет запросы с указанием нагрузки. В запросах не указывается конкретное P-состояние или частота. На основе информации от ОС, а также других факторов и ограничений оборудование выбирает подходящее P-состояние.
Я хочу рассказать об этом подробнее в следующей статье, но сейчас я поделюсь с вами своими мыслями. Мой домашний компьютер работает в этом режиме, я узнал это, проверив IA32_PM_ENABLE. Максимальный (но не гарантированный) уровень производительности — 39, минимальный — 1. Можно предположить, что существует 39 P-состояний. На данный момент уровень 39 установлен ОС как минимальный и как максимальный, потому что я отключил динамическое изменение частоты процессора в ядре.
Снижение частоты: инструкция
Собственно перейдем к инструкции, которая подходит как для Windows 10, так и для Windows 7. Для семерки тоже подходит.
План действий. Открываем панель управления — универсальный рецепт (просто в десятке не всегда ее просто открыть):
- Зажимаем Win + R, появится окошко Выполнить.
- Пишем команду control, нажимаем ОК (еще можно использовать control panel).
- Откроется окно Панель управления.
Теперь находим значок Электропитание (обычно он в самом низу, зелененький):
Запускаем его. Далее шаги следующие:
- Нажимаем настройка отключения дисплея либо настройка перехода в спящий режим.
- Далее — нажимаем Изменить дополнительные параметры питания.
Наша цель — открыть маленькое окошко с названием Электропитание, в котором будет туча настроек. Спускаемся в самый низ — выбираем управление питанием процессора:
Важно понимать, что эта настройка ВОЗМОЖНО зависит от настроек биоса. Там должно быть включена технология скидывания частоты в простое. Обычно — включена.
Теперь о главном:
- Минимальное состояние процессора — здесь вы в процентах указываете, насколько процессор имеет право понижать производительность в простое.
- Максимальное состояние процессора — наоборот, какой потолок производительности у процессора при выполнении работы.
100% — максимум.
0% — минимум.
- Минимальное состояние — означает, что когда процессор не работает, смысл ему дальше функционировать на всю мощность? Пусть тогда отдыхает. Вот насколько сильно можно отдыхать — вы указываете в процентах. Пример — процессор имеет частоту 4 ГГц. Вы в минимальном состоянии указали 25% — четвертая часть. Результат — в простое процессор скидывает частоту до 1 ГГц.
- Максимальное состояние — насколько сильно вы разрешаете процессору напрягаться. Может быть пусть попридержит коней, куда так гонит? Пример — у вас процессор 4 ГГц. В макс состоянии вы указали 75%. Проц будет максимально работать на 75%. Результат — частота проца не будет подыматься выше 3 ГГц.
Как прерывания влияют на процессор\ядро в состоянии сна?
Когда происходит прерывание, соответствующее ядро пробуждается и переходит в состояние С0. Однако, например Intel® Xeon® E3-1200 v5, поддерживает технологию Power Aware Interrupt Routing (PAIR), у которой есть два достоинства:
- для энергосбережения прерывание может быть переадресовано работающему ядру, чтобы не будить спящее ядро;
- для производительности прерывание может быть переадресовано от работающего на полную мощность ядра к простаивающему (С1) ядру.
Причина 3: Измененные опции BIOS
Сразу несколько параметров в БИОС могут стать виновниками работы компьютера не на всю мощность.
Пониженная тактовая частота
Возможно, причина недостаточной производительности кроется в выставленных в BIOS заниженных показателей CPU, из-за которых берутся не максимальные частоты. Войдите в БИОС и посмотрите на конфигурацию процессора и его ядер.
Если вы увидите, что настройки переведены в ручной режим, а где-то установлено лимитированным минимальное значение, будь то настройка по отдельным ядрам или всему ЦПУ, значит, именно в этом кроется причина отсутствия работы на полную мощность. Ориентируйтесь на названия типа «CPU Core Ratio» и «Core Ratio Limit» и найдите подобные строчки в своей подсистеме.
Кроме того, если процессор будет находиться под напряжением ниже рекомендуемого для него значения, CPU не сможет работать на высоких частотах. Скорее всего, этот показатель будет называться как-то вроде «CPU Core Voltage». Оба этих параметра в различных BIOS и UEFI можно проверить в одном окне.
Обратите внимание, что на значениях процессора выставляется не частота, а множитель, значение которого перемножается с показателем шины, и только тогда получается частота.
Отключённые ядра/режим многопоточности
Если же вас беспокоит то, что с одним приложением компьютер справляется, но несколько открытых окон заставляют ПК нещадно «тупить», вероятно, что-то не так с настройками ядер. Дело в том, что их тактовую частоту можно не только снизить, но и вовсе отключить функционирование всех ядер, кроме одного.
Не стоит забывать и о «Hyper-Threading», иным словом – многопоточности. Отключение этого режима процессора может вызвать значительное снижение производительности, особенно при параллельной работе с несколькими программами. В связи с этим стоит проверить одноимённую строку «Hyper-Threading», и узнать, какое число ядер является активным, то есть «Active Processor Cores».
Отключение возможности распараллеливания потоков и активность лишь нескольких ядер может быть причиной, почему ЦПУ работает не так быстро, как вам хотелось бы.
Отключённый Turbo Boost/Core
Выключенный режим «Turbo Boost» у CPU от Intel или «Turbo Core» у AMD не даст процессору достигнуть частоты выше базовой, что довольно обидно, когда вы приобретали модель с возможностью саморазгона, а компьютер работает максимум на номинальной вычислительной мощности. За этот режим ответственная одноимённая строчка или слегка переиначенная, типа «Turbo mode».
Заметки про Intel® Turbo Boost
Поскольку TDP (расчетная тепловая мощность) — это максимальная мощность, которую процессор может выдержать, то процессор может повышать свою частоту выше базовой, при условии что энергопотребление не превысит TDP. Технология Turbo Boost может временно повышать энергопотребление до границы PL2 (Power Limit 2) на короткий промежуток времени. Поведение Turbo Boost может быть изменено через подсказки оборудованию.
Комбинации состояний ACPI G/S и С-состояний процессора
Приятно видеть все комбинации в таблице:
В состоянии G0/S0/C8 системы процессора запущены, но все ядра отключены.
В G1 (S3 или S4) некорректно говорить про С-состояния (это касается как CC-состояний, так и PC-состояний), так как процессор полностью обесточен.
Для G3 не существует S-состояний. Система не спит, она физически отключена и не может проснуться. Ей необходимо сначала получить питание.
Причина 2: Аппаратная несовместимость
Если же процессор загружен под завязку, но непонятно, почему использует лишь часть своей вычислительной мощности, следует углубиться в настройки системы и подсистемы, будь то BIOS или UEFI.
Первым пунктом станет проверка совместимости вашей материнской платы с CPU. Обычно для этого хватит факта наличия или отсутствия вот такой надписи при загрузке компьютера: «Intel CPU uCode loading error». Именно она будет обозначать, что процессор несовместим с текущей версией BIOS материнской платы. Это не самый критичный сбой и при нём даже можно работать, однако, одним из последствий такой несовместимости может стать то, что процессор не работает на максимальной мощности.
Применима ли эта информация о C-состояниях и P-состояниях к мобильным и встраиваемым процессорам?
Для примера, недавний MacBook Air с процессором i5-5350U в основном поддерживает возможности, описанные выше (но я не уверен про P-состояния, контролируемые оборудованием). Я также смотрел документацию ARM Cortex-A, и, хотя там применяются другие термины, механизмы управления питанием выглядят похоже.
Каков предел энергопотребления процессора?
Это во многом зависит от процессора, но для процессора E3-1245 v5 @ 3.50 ГГц расчетная тепловая мощность (Thermal Design Power, TDP) составляет 80 ватт. Это среднее значение, которое процессор может выдерживать бесконечно долго (Power Limit, PL1 на изображении ниже). Системы охлаждения должны быть рассчитаны на это значение, чтобы быть надежными. Фактическое энергопотребление процессора может быть выше в течение короткого промежутка времени (состояния PL2, PL3, PL4 на изображении ниже). TDP измеряется при нагрузке высокой вычислительной сложности (худший случай), когда все ядра работают на базовой частоте (3.5 ГГц).
Как видно на изображении выше, процессор в состоянии PL2 потребляет больше энергии, чем заявлено в TDP. Процессор может находиться в этом состоянии до 100 секунд, а это достаточно долго.
Особенности CPU
Согласно официальной странице продукта, мой процессор поддерживает следующие технологии:
- состояния простоя (Idle States);
- усовершенствованная технология Intel® SpeedStep (Enhanced Intel® SpeedStep Technology).
Теперь выясним, что значит каждое из этих определений.
Состояния питания 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.
Сценарии настроек
Я хочу чтобы процессор работал только на минимальной частоте:
Я хочу чтобы процессор работал постоянно на максимальной частоте:
Процессор работает максимум на половине частоты:
Если у вас проц 3 ГГц, то при таких настройках будет работать макс на 1.5 ГГц. Чтобы проц не скидывал частоту в простое, а всегда работал на 1.5 — в минимальное состояние процессора установите также 50%.
Кстати для применения настроек можно нажимать не ОКЕЙ, а ПРИМЕНИТЬ. Тем самым окошко будет дальше висеть — можно продолжать работать и тестировать изменения. И если что — пошаманить настройками, они ведь всегда под рукой
Процессор компьютера обязан работать на полную мощность. В иных случаях пользователя могут ожидать неприятные сюрпризы с подвисаниями и торможением системы в моменты пиковой нагрузки. В рамках данной статьи мы рассмотрим причины, почему CPU не выкладывается на максимум.
Как это все работает, например, на Linux?
На этот вопрос я отвечу в другой статье.
Зачем ограничивать частоту процессора?
Вот смотрите — сейчас у меня жара. Нереальная. 15 этаж, в квартире не знаю сколько, градусника нет, но думаю куда больше за 30+ … процессор греется, из-за того что на нем стоит большой кулер — отлично рассеивает тепло, температура 45. Опасность в том что это тепло хавает блок питания — он греется теперь уже прилично. Сейчас разбираться в этом, химичить с охлаждением, отводом тепла — нет желания, ибо сам сижу под вентилятором — без него сума сойду..
Было решение — снизить частоту процессора, пусть не самый лучший вариант, но все таки..
Да, лучший способ снизить частоту — выставить меньший множитель в биосе, не спорю — реально работающий способ и надежный. Но я очень не хотел трогать настройки процессора, поэтому решил попробовать сделать это программно.
Как программно запросить переход в энергосберегающее С-состояние?
Современный (но не единственный) способ запросить переход в энергосберегающее состояние — это использовать инструкцию MWAIT или инструкцию HLT. Это инструкции привилегированного уровня, и они не могут быть выполнены пользовательскими программами.
Инструкция MWAIT (Monitor Wait) заставляет процессор перейти в оптимизированное состояние (C-состояние) до тех пор, пока по указанному (с помощью другой инструкции, MONITOR) адресу не будет произведена запись. Для управления питанием MWAIT работает с регистром EAX. Биты 4-7 используются для указания целевого С-состояния, а биты 0-3 указывают суб-состояние.
Примечание: Я думаю, что на данный момент только AMD обладает инструкциями MONITORX/MWAITX, которые, помимо мониторинга записи по адресу, работают с таймером. Это еще называется Timed MWAIT.
Инструкция HLT (halt) останавливает выполнение, и ядро переходит в состояние HALT до тех пор, пока не произойдет прерывание. Это означает, что ядро переходит в состояние C1 или C1E.
Что вынуждает ядро входить в определенное С-состояние?
Как отмечалось ранее, переходы между глубокими С-состояниями имеют высокие задержки и высокие энергетические затраты. Таким образом, такие переходы должны выполняться с осторожностью, особенно на устройствах, работающих от аккумуляторов.
Выясняем причину сниженной мощности
Существует до десятка предпосылок работы процессора на неполную мощность. Это могут быть аппаратные или программные причины, в том числе сбои, или же банальный простой процессора. Следует рассмотреть их все, начиная с самой тривиальной.
P-состояния, управляемые операционной системой
В этом случае операционная система знает о P-состояниях и конкретном состоянии, запрошенным ОС. Проще говоря, операционная система выбирает рабочую частоту, а напряжение подбирается процессором в зависимости от частоты и других факторов. После того, как P-состояние запрошено записью в моделезависимый регистр (подразумевается запись 16 бит в регистр IA32_PERF_CTL), напряжение изменяется до автоматически вычисленного значения и тактовый генератор переключается на заданную частоту. Все ядра имеют одно общее P-состояние, поэтому невозможно установить P-состояние эксклюзивно для одного ядра. Текущее P-состояние (рабочий режим) можно узнать, прочитав информацию из другого моделезависимого регистра — IA32_PERF_STATUS.
Смена P-состояния мгновенна, поэтому в секунду можно выполнять множество переходов. Это отличает от переходов C, которые выполняются дольше и требуют энергетических затрат.
Причина 4: Пониженное электропотребление
Не только в BIOS позволяется ограничить потребление энергии процессором — это возможно и в самой Windows. Хотя ОС всё равно зависит от установленного вольтажа в подсистеме и не может взять больше, чем дают, она вправе наложить очередной лимит на CPU, но уже не в абсолютных, а в относительных значениях. Для того чтобы удостовериться в полном электроснабжении ЦПУ силами операционной системы, стоит заглянуть в соответствующую панель таким способом:
-
С помощью функции поиска в меню «Пуск» найдите «Панель управления» и откройте данное приложение.
Если показатель будет ниже «100%», то процессор физически не сможет работать на полную мощность. Уже на «99%» режим «Turbo Boost» автоматически отключается и максимальная частота становится равной номинальной. Ну а если там указано всего «50%», процессор сможет работать лишь в половину своей мощности в лучшем случае.
В данной статье мы рассмотрели основные причины, почему процессор не работает на полную мощность. Это может быть и банальный простой CPU, исправляющийся самой нагрузкой, но вероятна и аппаратная несовместимость, при которой нужно обновить BIOS. При сбое параметров подсистемы можно просто сбросить настройки до исходных значений, при которых ЦПУ не должно ничего ограничивать.
Мы рады, что смогли помочь Вам в решении проблемы.
Отблагодарите автора, поделитесь статьей в социальных сетях.
Опишите, что у вас не получилось. Наши специалисты постараются ответить максимально быстро.
Как снизить энергопотребление процессора во время его работы?
На процессорах для массового использования (мы не берем в расчет вещи, которые возможны при их проектировании) для снижения потребляемой энергии можно реализовать один из сценариев:
- Сократить энергопотребление подсистемы (ядра или другого ресурса, такого как тактовый генератор или кэш) путем отключения питания (уменьшив напряжение до нуля).
- Снизить энергопотребление путем снижения напряжения и/или таковой частоты подсистемы и/или целого процессора.
Второй вариант требует чуть больше объяснений. Энергопотребление интегральной схемы, которой является процессор, линейно пропорционально тактовой частоте и квадратично напряжению.
Примечание для тех, кто разбирается в цифровой электронике: Pcpu = Pdynamic + Pshort circuit + Pleak. При работающем процессоре Pdynamic является наиболее важной составляющей, именно эта часть зависит линейно от частоты и квадратично от напряжения. Pshort circuit пропорционально частоте, а Pleak — напряжению.Более того, напряжение и тактовая частота связаны линейной зависимостью.
Высокая производительность требует повышенной тактовой частоты и увеличения напряжения, что еще больше влияет на энергопотребление.
Читайте также: