p state coordination что это в биосе
Как в БИОСе влючить разгон процессора на постоянной частоте его работы
Добавлено через 19 минут
Сейчас обнаружил, что такая «услуга» по «тормозу разгона» удалила очень важные данные.
Разгон оперативки бесполезен, а разгон процессора пустая трата электроэнергии
К такому выводу я пришел после самостоятельного изучения разгона Ryzen 5 1600 и оперативки. На.
Как поставить макс. температуру процессора в биосе?
Как включить настройку в биосе чтобы пк выключился или подал звуковой сигнал при приближении к.
Разгон FХ-6300 на Биосе F1
Собственно сабж, проц как известно имеет разлоченный множитель, но почему-то в биосе поменять я его.
ASRock K10N78D, как повысить или понизить вольтаж процессора в биосе?
подскажите как повысить или понизить вольтаж проца в биосе?мать:ASRock K10N78D проц:DualCore AMD.
a_shats, спасибо за помощь, благодаря Вам за полчаса нашёл правильные настройки, которые не мог найти несколько дней, потому что любая подсказка со стороны наталкивает на верную мысль. Немного поманипулировал, и получилось вот что:
Эти настройки пока стабильно держат частоту 2300 МГц.
По поводу шума вентиляторов. Я установил тихие десктопные, на полных оборотах слегка шуршат, температуру держат не более 70 град. в разгоне. Правда, пришлось из алюминиевых пластин делать переходники. А прибавка частоты в 300 МГц довольно существенна, прибавка производительности заметна.
P state coordination что это в биосе
Процессоры Intel поддерживают несколько технологий для оптимизации энергопотребления. В этой статье (перевод [1]) дается обзор p-состояний (оптимизация напряжения питания и частоты CPU во время работы) и c-состояний (оптимизация потребления мощности, если ядро не выполняет ни одной инструкции).
[P-состояния]
Во время выполнения кода операционная система и CPU могут оптимизировать энергопотребление с помощью различных P-состояний (P это сокращение от «performance», что означает «производительность»). В зависимости от требований, CPU работает на разных частотах. Состояние P0 соответствует самой высокой частоте (с самым высоким напряжением питания).
Для процессоров Intel до архитектуры Haswell/Broadwell, желаемая частота (и соответствующее ей напряжение питания) указывается операционной системой путем записи соответствующих величин в специальные регистры процессора [2][3].
В архитектуре Skylake операционная система может оставить управление P-состояниями аппаратуру CPU (Speed Shift Technology, Hardware P-states [4]). С Kaby Lake эти функции были дополнительно оптимизированы [5].
Speed Schift (сдвиг скорости). P-состояния определяются в BIOS, и управляются операционной системой. Технология Speed Schift дает полное или частичное управление частотой тактирования CPU (может осуществляться либо во всем диапазоне, либо в узком окне). Speed Schift требует поддержки со стороны операционной системы (Windows 10 с новыми обновлением эту функцию поддерживает), также требуется любой процессор Intel 6 Skylake. Сдвиг скорости означает ускоренный отклик на запросы изменения производительности со стороны ПО (JavaScript, инструменты офиса, веб-браузеры). Технология сдвига скорости обеспечивает увеличение производительности для обычных задач, при этом незначительно снижается общее энергопотребление, т. е. эффективность работы всей системы повышается.
[C-состояния]
В отличие от P-состояний, которые были разработаны для регулирования потребления мощности во время выполнения кода (т. е. в нормальном рабочем состоянии процессора), C-состояния используются для оптимизации энергопотребления в режиме ожидания (idle mode, т. е. когда никакой код процессором не выполняется).
Типовые C-состояния следующие:
C0 – Active Mode: код выполняется, это состояние соответствует одному из P-состояний.
C1 – Auto Halt (автоматическая приостановка).
C1E – Auto halt, low frequency, low voltage (автоматическая приостановка с пониженной частотой и напряжением питания).
C2 – Временное состояние перед переходом в C3. Память в рабочем состоянии.
C3 – Сброс кэшей L1/L2 (flush), выключение тактовых частот.
C6 – Сохранение состояний ядра перед выключением, и выключение PLL (т. е. прекращение синтеза тактовых частот).
C7 – C6, плюс может быть сброшен LLC (LLC означает кэш самого высокого уровня, т. е. самая медленная память кэш).
C8 – C7, плюс должен быть сброшен LLC.
Примечание *: показано в грубом приближении.
C-состояния можно отличить друг от друга по C-состояниям ядра (Core C-states или CC-states), состояниям корпуса (Package C-states или PC-states) и логическим состояниям. В большинстве случаев операционная система устанавливает определенное состояние для ядра путем выполнения команды MWAIT.
Примечание: «состояние ядра» (core state) относится к ядру, которое находится в состоянии самого большого потребления энергии (наиболее активно).
[Запрет в BIOS функции CPU Power Saving]
В некоторых случаях рекомендуется деактивировать в BIOS настройки экономии питания CPU. Здесь показано, где найти эти опции и как их запретить, чтобы опции управления питанием (CPU P State Control и CPU C State Control) были полностью запрещены в BIOS (на примере материнской платы Supermicro X10DRi и процессора Intel Xeon E5 2620v4.
Как запретить CPU Power Saving:
1. Во время начального процесса загрузки (сразу после включения питания или сброса) нажмите специальную клавишу для входа в BIOS. Чаще всего это Del (Delete) или F2, для материнской платы Supermicro X10DRi это клавиша Delete.
3. Поменяйте настройку Power Technology в состояние Custom и Energy Efficient Turbo в состояние Disable.
4. Перейдите в раздел CPU P State Control, деактивируйте EIST (P-States) and Turbo Mode.
5. Перейдите в раздел CPU C State Control, поменяйте Package C State Limit на C0/C1 state и деактивируйте CPU C3 Report, CPU C6 Report и Enhanced Halt State (C1E).
Краткое руководство по управлению питанием процессора
Как центральный процессор может сокращать собственное энергопотребление? Основы этого процесса — в статье.
Центральный процессор (CPU) спроектирован на бесконечно долгую работу при определенной нагрузке. Практически никто не проводит вычисления круглые сутки, поэтому большую часть времени он не работает на расчетном максимуме. Тогда какой смысл держать его включенным на полную мощность? Здесь стоит задуматься об управлении питанием процессора. Эта тема включает в себя оперативную память, графические ускорители и так далее, но я собираюсь рассказать только про CPU.
Если вы знаете про C-состояния (C-states), P-состояния (P-states) и то, как процессор переходит между ними, то, возможно, в этой статье вы не увидите ничего нового. Если это не так, продолжайте читать.
Я планировал добавить реальные примеры из ОС Linux, но статья становилась все больше, так что я решил приберечь это для следующей статьи.
Основные источники информации, использованные в этом тексте:
Особенности CPU
Согласно официальной странице продукта, мой процессор поддерживает следующие технологии:
Теперь выясним, что значит каждое из этих определений.
Как снизить энергопотребление процессора во время его работы?
На процессорах для массового использования (мы не берем в расчет вещи, которые возможны при их проектировании) для снижения потребляемой энергии можно реализовать один из сценариев:
Второй вариант требует чуть больше объяснений. Энергопотребление интегральной схемы, которой является процессор, линейно пропорционально тактовой частоте и квадратично напряжению.
Примечание для тех, кто разбирается в цифровой электронике: Pcpu = Pdynamic + Pshort circuit + Pleak. При работающем процессоре Pdynamic является наиболее важной составляющей, именно эта часть зависит линейно от частоты и квадратично от напряжения. Pshort circuit пропорционально частоте, а Pleak — напряжению.
Более того, напряжение и тактовая частота связаны линейной зависимостью.
Высокая производительность требует повышенной тактовой частоты и увеличения напряжения, что еще больше влияет на энергопотребление.
Каков предел энергопотребления процессора?
Это во многом зависит от процессора, но для процессора E3-1245 v5 @ 3.50 ГГц расчетная тепловая мощность (Thermal Design Power, TDP) составляет 80 ватт. Это среднее значение, которое процессор может выдерживать бесконечно долго (Power Limit, PL1 на изображении ниже). Системы охлаждения должны быть рассчитаны на это значение, чтобы быть надежными. Фактическое энергопотребление процессора может быть выше в течение короткого промежутка времени (состояния PL2, PL3, PL4 на изображении ниже). TDP измеряется при нагрузке высокой вычислительной сложности (худший случай), когда все ядра работают на базовой частоте (3.5 ГГц).
Как видно на изображении выше, процессор в состоянии PL2 потребляет больше энергии, чем заявлено в TDP. Процессор может находиться в этом состоянии до 100 секунд, а это достаточно долго.
Состояния питания (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).
Примечание: Из-за технологии Intel® Hyper-Threading существуют также С-состояния потоков. Хотя отдельный поток может работать с С-состояниями, изменения в энергопотреблении происходят, только когда ядро входит в нужное состояние. В данной статье тема C-состояний на потоках рассматриваться не будет.
Вот описание состояний из даташита:
Примечание: LLC обозначает Last Level Cache, кэш последнего уровня и обозначает общий L3 кэш процессора.
Визуальное представление состояний:
Источник: Software Impact to Platform Energy-Efficiency White Paper
Последовательность C-состояний простыми словами:
Однако если ядро работает (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: «Состояния C0..C7 для расширения MWAIT — это специфичные для процессора C-состояния, а не ACPI C-состояния». Поэтому не путайте эти состояния с ACPI C-состояниями, они явно связаны и между ними есть соответствие, но это не одно и то же.
Я создал гистограмму, представленную ниже, из исходного кода драйвера intel_idle для моего процессора (модель 0x5e). Подписи горизонтальной оси:
Имя C-состояния: специфичное для процессора состояние: специфичное суб-состояние.
Вертикальная ось обозначает задержку выхода и целевые резидентные значения из исходного кода. Задержка выхода используется для оценки влияния данного состояния в реальном времени (то есть сколько времени потребуется для возвращения в С0 из этого состояния). Целевое резидентное значение обозначает минимальное время, которое ядро должно находиться в данном состоянии, чтобы оправдать энергетические затраты на переход в это состояние и обратно. Обратите внимание на логарифмический масштаб вертикальной оси. Задержки и минимальное время нахождения в состоянии увеличивается экспоненциально с увеличением номера состояния.
Константы задержок выхода и целевых резидентных значении C-состояний в исходном коде intel_idle
Примечание: Хотя состояния С9 и С10 включены в таблицу, они имеют 0 суб-состояний и поэтому не используются в моем процессоре. Остальные процессоры из семейства могут поддерживать эти состояния.
Состояния питания 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. Краткий обзор:
Вот поддерживаемые состояния ACPI.
Комбинации состояний ACPI G/S и С-состояний процессора
Приятно видеть все комбинации в таблице:
В состоянии G0/S0/C8 системы процессора запущены, но все ядра отключены.
В G1 (S3 или S4) некорректно говорить про С-состояния (это касается как CC-состояний, так и PC-состояний), так как процессор полностью обесточен.
Для G3 не существует S-состояний. Система не спит, она физически отключена и не может проснуться. Ей необходимо сначала получить питание.
Как программно запросить переход в энергосберегающее С-состояние?
Современный (но не единственный) способ запросить переход в энергосберегающее состояние — это использовать инструкцию MWAIT или инструкцию HLT. Это инструкции привилегированного уровня, и они не могут быть выполнены пользовательскими программами.
Инструкция MWAIT (Monitor Wait) заставляет процессор перейти в оптимизированное состояние (C-состояние) до тех пор, пока по указанному (с помощью другой инструкции, MONITOR) адресу не будет произведена запись. Для управления питанием MWAIT работает с регистром EAX. Биты 4-7 используются для указания целевого С-состояния, а биты 0-3 указывают суб-состояние.
Примечание: Я думаю, что на данный момент только AMD обладает инструкциями MONITORX/MWAITX, которые, помимо мониторинга записи по адресу, работают с таймером. Это еще называется Timed MWAIT.
Инструкция HLT (halt) останавливает выполнение, и ядро переходит в состояние HALT до тех пор, пока не произойдет прерывание. Это означает, что ядро переходит в состояние C1 или C1E.
Что вынуждает ядро входить в определенное С-состояние?
Как отмечалось ранее, переходы между глубокими С-состояниями имеют высокие задержки и высокие энергетические затраты. Таким образом, такие переходы должны выполняться с осторожностью, особенно на устройствах, работающих от аккумуляторов.
Возможно ли отключить С-состояния (всегда использовать С0)?
Это возможно, но не рекомендуется. В даташите (секция 4.2.2, страница 64) есть примечание: «Долгосрочная надежность не гарантируется, если все энергосберегающие состояния простоя не включены». Поэтому вам не стоит отключать С-состояния.
Как прерывания влияют на процессор\ядро в состоянии сна?
Когда происходит прерывание, соответствующее ядро пробуждается и переходит в состояние С0. Однако, например Intel® Xeon® E3-1200 v5, поддерживает технологию Power Aware Interrupt Routing (PAIR), у которой есть два достоинства:
P-состояния
P-состояния подразумевают, что ядро в состоянии С0, потому что ему требуется питание, чтобы выполнять инструкции. P-состояния позволяют изменять напряжение и частоту ядра (другими словами рабочий режим), чтобы снизить энергопотребление. Существует набор P-состояний, каждое из которых соответствует разных рабочим режимам (пары напряжение-частота). Наиболее высокий рабочий режим (P0) предоставляет максимальную производительность.
Процессор Intel® Xeon® E3–1200 v5 позволяет контролировать P-состояния из операционной системы (Intel® SpeedStep Technology) или оставить это оборудованию (Intel® Speed Shift Technology). Вся информация ниже специфична для семейства Intel® Xeon® E3-1200 v5, но я полагаю, это в той или иной степени актуально и для других современных процессоров.
P-состояния, управляемые операционной системой
В этом случае операционная система знает о P-состояниях и конкретном состоянии, запрошенным ОС. Проще говоря, операционная система выбирает рабочую частоту, а напряжение подбирается процессором в зависимости от частоты и других факторов. После того, как P-состояние запрошено записью в моделезависимый регистр (подразумевается запись 16 бит в регистр IA32_PERF_CTL), напряжение изменяется до автоматически вычисленного значения и тактовый генератор переключается на заданную частоту. Все ядра имеют одно общее P-состояние, поэтому невозможно установить P-состояние эксклюзивно для одного ядра. Текущее P-состояние (рабочий режим) можно узнать, прочитав информацию из другого моделезависимого регистра — IA32_PERF_STATUS.
Смена P-состояния мгновенна, поэтому в секунду можно выполнять множество переходов. Это отличает от переходов C, которые выполняются дольше и требуют энергетических затрат.
P-состояния, управляемые оборудованием
В этом случае ОС знает об аппаратной поддержке P-состояний и отправляет запросы с указанием нагрузки. В запросах не указывается конкретное P-состояние или частота. На основе информации от ОС, а также других факторов и ограничений оборудование выбирает подходящее P-состояние.
Я хочу рассказать об этом подробнее в следующей статье, но сейчас я поделюсь с вами своими мыслями. Мой домашний компьютер работает в этом режиме, я узнал это, проверив IA32_PM_ENABLE. Максимальный (но не гарантированный) уровень производительности — 39, минимальный — 1. Можно предположить, что существует 39 P-состояний. На данный момент уровень 39 установлен ОС как минимальный и как максимальный, потому что я отключил динамическое изменение частоты процессора в ядре.
Заметки про Intel® Turbo Boost
Поскольку TDP (расчетная тепловая мощность) — это максимальная мощность, которую процессор может выдержать, то процессор может повышать свою частоту выше базовой, при условии что энергопотребление не превысит TDP. Технология Turbo Boost может временно повышать энергопотребление до границы PL2 (Power Limit 2) на короткий промежуток времени. Поведение Turbo Boost может быть изменено через подсказки оборудованию.
Применима ли эта информация о C-состояниях и P-состояниях к мобильным и встраиваемым процессорам?
Для примера, недавний MacBook Air с процессором i5-5350U в основном поддерживает возможности, описанные выше (но я не уверен про P-состояния, контролируемые оборудованием). Я также смотрел документацию ARM Cortex-A, и, хотя там применяются другие термины, механизмы управления питанием выглядят похоже.
Как это все работает, например, на Linux?
На этот вопрос я отвечу в другой статье.
Как я могу узнать состояние процессора?
Существует не так много приложений, которые могут выводить эту информацию. Но вы можете использовать, например, CoreFreq.
Вот какую информацию можно получить (это не весь вывод).
Вот информация о ядре, включая информацию о драйвере idle.
Мониторинг счетчиков С-состояний (для ядра):
Описание значений параметров:
Проявление неисправностей: Чрезмерное увеличение напряжения может привести к неработоспособности или сокращению срока службы процессора. Также увеличение напряжения способствует более интенсивному нагреву процессора, что потребует лучшего его охлаждения.
Описание значений параметров:
Проявление неисправностей: Чрезмерное увеличение напряжения может привести к неработоспособности или сокращению срока службы материнской платы.
Описание значений параметров:
Проявление неисправностей: Чрезмерное увеличение напряжения может привести к неработоспособности или сокращению срока службы оперативной памяти.
Описание значений параметров:
Проявление неисправностей: Чрезмерное увеличение напряжения может привести к неработоспособности или сокращению срока службы компонентов компьютера: процессора, оперативной памяти и пр.
DLL сравнивает фазу своего последнего выхода с входным тактовым сигналом. Если они не синхронны, генерируется сигнал ошибки, который затем интегрируется и возвращается в качестве управляющего сигнала. Интеграция позволяет обнулить ошибку, сохраняя при этом управляющий сигнал и, следовательно, задержки там, где они должны быть для фазовой синхронизации. Таким образом, управляющий сигнал напрямую влияет на фазу.
Рассинхронизация возможна по самым разным причинам: температурные колебания, микроизменения напряжения питания. DLL позволяет сохранить синхронизацию, улучшив этим самым стабильность работы оперативной памяти. Впервые DLL был применен в оперативной памяти RDRAM.
Описание значений параметров:
Данный параметр улучшает стабильность работы оперативной памяти, особенно в случае ее разгона.
Улучшаем Boost процессоров AMD микроархитектуры Zen 2. Community Update #2: Let’s Talk от 1usmus
В этой статье я поделюсь с вами индивидуальным планом электропитания для Windows, который должен оказать существенное влияние на поведение boost процессоров Ryzen 3-го поколения, способность использовать предпочтительные ядра, что даст в итоге более высокие частоты, чем вы имеете сейчас (разумеется, если вы испытываете проблему), а так же улучшит фреймрейт-динамику в играх.
Процессоры AMD 3-го поколения Ryzen являются самыми передовыми настольными процессорами на рынке, которые вы можете купить. Также эти процессоры являются уникальными из-за технологии CPPC2 (Collaborative Power and Performance Control 2), которая является интерфейсом-посредником для управления питанием и частотой между процессором и операционной системой. Цифра 2 означает, что это взаимодействие существенно возросло и составляет 1 мс, а не 15 мс как было раньше. Теперь процессор гораздо быстрее реагирует на ту или иную нагрузку и тем самым более тонко настраивает частоту, чтобы система имела максимальную энергоэффективность.
В прошлом я уже писал другие материалы, связанные с архитектурой Zen 2 и оптимизацией памяти Ryzen. Сегодня я представляю вам «1usmus Ryzen Universal» для процессоров Ryzen 3-го поколения. Это измения взаимодействия планировщика Windows и процессора в зависимости от запросов производительности. Этот план питания должен быть особенно полезен для пользователей чипов серии Ryzen 9, таких как Ryzen 9 3900X, Ryzen 9 3950X и, конечно же, Ryzen Threadripper 3-го поколения на сокете TRX4. Разумеется, это актуально для пользователей всей линейки процессоров, основанных на архитектуре Zen 2.
Предпосылки
В отличие от приложений для бенчмаркинга, которые порождают кучу одинаковых потоков, выполняющих одинаковый код на различных фрагментах данных, современные игры очень разнородны. Каждый поток выполняет свой собственный код, который полностью отличается от других потоков и работает с данными в разном количестве, генерируя нагрузки, которые различаются между потоками. Данные, создаваемые одним потоком, часто используются другим, что приводит к задержкам и может даже передавать свои данные другому ожидающему потоку. Также существует концепция «пула потоков», где каждый рабочий поток выбирает любое задание любого типа, работающее с любыми данными, независимо от того, что готово для запуска. Это означает, что поток данных совершенно хаотичен, что генерирует много трафика между CCX, когда некоторые потоки находятся на одном CCX, а другие — на другом.
Это поведение дополнительно усиливается современными графическими API, такими как DirectX 12 и Vulkan, которые поощряют подачу команд рендеринга многопоточным способом. Возможно, вы заметили, как некоторые игры демонстрируют снижение производительности на Ryzen (по сравнению с Intel), когда используется более новый Vulkan или DX12 API. Windows любит балансировать загрузку ЦП между несколькими ядрами, перемещая потоки из занятых ядер в свободные. Это нормальное, ожидаемое поведение для современного планировщика процессов с поддержкой SMP, но Windows на самом деле довольно глупа.
Windows считает ядро «занятым», даже если его использует только один поток, и перемещает этот же поток в свободное ядро, если оно доступно! Кроме того, планировщик процессов Windows не делает различий между физическим и виртуальным ядрами, а также между CCX с их отдельными кэшами. В сравнительно недавних версиях Windows (по крайней мере, начиная с Windows 7) эта тенденция к миграции сдерживается системой «базовой парковки». Если ядро припарковано, планировщик процессов не переносит в него потоки, что позволяет ему переходить в состояние глубокого простоя для экономии энергии. Кроме того, алгоритм парковки ядра отвечает за поддержание выключения второго виртуального ядра каждого физического ядра с поддержкой HT/SMT, если это не требуется, что максимизирует производительность на поток в сценариях с легкой многопоточностью.
Просто для пояснения: планировщик Windows не поддерживает SMT, только алгоритм парковки ядра осведомлен о SMT. Почему это важно? Потому что в режиме высокой производительности система основной парковки отключена. Каждое отдельное ядро отключено, и поэтому планировщик процессов весело мигрирует потоки через каждое физическое и виртуальное ядро в системе (если все ядра не заняты, например, многопоточной рабочей нагрузкой). Это означает, что даже однопоточная рабочая нагрузка заканчивается перемещением между CCX или даже CCD, и ей приходится перетаскивать все данные, с которыми она работает, за ним, примерно в среднем каждые 5–40 миллисекунд в зависимости от используемого SMU и сборки ОС. В игре умножьте это на количество эффективных потоков, которые игра запускает и в результате вы получите фризы или низкий 1% фреймрейт. Не только это, но и потоки разделяют физическое ядро гораздо чаще. Linux справляется с этим гораздо лучше: он активно предпочитает хранить потоки на одном и том же ядре до тех пор, пока на этом ядре нет конфликтов планирования. Таким образом, однопоточная рабочая нагрузка в Linux обычно будет оставаться на одном и том же ядре в течение нескольких секунд, если не дольше. Это не только позволяет избежать накладных расходов при миграции потока, но также позволяет избежать пропусков кэша и трафика между CCX, который может возникнуть в результате такой миграции. Такое поведение не является специфичным для Ryzen, но было стандартным на всех компьютерах SMP/SMT/CMT, работающих под управлением Linux, в течение нескольких лет.
Неделю назад Microsoft выпустила обновление для Windows 10 (1909), которое дает планировщику ОС возможность определять приоритеты потоков. Я протестировал предварительную сборку этой версии и не заметил значительных улучшений. Довольно часто планировщик использовал более высокий приоритет для фоновых процессов. Я думаю, вы представляете, что происходит, если Windows отдает приоритет такому процессу, а не вашей текущей запущенной игре.
Мой подход к устранению этого недостатка в планировщике Windows заключается в использовании настраиваемого профиля электропитания, который обеспечивает лучшее управление планировщиком по распределению нагрузок между ядрами. Сперва будут вовлечены, по возможности, лучшие ядра, что приведет более высокому и плавному fps. Если лучшие ядра будут заняты — нагрузка распределится по ядрам с меньшим рангом.
P-States и C-States
Существует два механизма управления для снижения энергопотребления процессора.
C-States описывают различные возможности простоя (энергосбережения). Прежде чем подсистему можно отключить, она должна бездействовать. Таким образом, C-States x (или Cx) означает, что одна или несколько подсистем ЦП находятся в режиме ожидания и не функционируют.
С другой стороны, P-States выполняют переключение в определенные (энергосберегающие) состояния. Подсистема фактически работает, но не требует полной производительности, поэтому напряжение и/или частота, на которой она работает, снижается. P-States x (или Px) означает, что подсистема, к которой оно относится (например, ядро ЦП), работает на определенной паре «частота и напряжение».
Поскольку большинство современных процессоров имеют несколько ядер в одном модуле (CCX или CCD), C-States далее делятся на C-States ядра (CC-States) и C-States модуля (PC-States). Причина PC-States состоит в том, что в процессоре есть другие (общие) компоненты, которые также могут быть отключены после того, как все ядра, использующие их, выключены (например, общий кэш). Однако, как пользователь или программист, мы не можем управлять ими, поскольку мы не взаимодействуем напрямую с модулем, а скорее с отдельными ядрами. Тогда мы можем напрямую воздействовать только на СС-States; PC-States косвенно влияют на основе CC-States ядер.
Состояния нумеруются, начиная с нуля, как C0, C1. и P0, P1. Чем выше число, тем больше энергии сохраняется. C0 означает отсутствие энергосбережения при выключении чего-либо, поэтому все включено. P0 означает максимальную производительность, то есть максимальную частоту, напряжение и используемую мощность.
Инструкция по установке кастомного профиля питания
Для корректной работы этого обновленного плана электропитания в UEFI необходимо настроить определенные параметры. Хотя большинство производителей материнских плат используют правильные значения по умолчанию, я все же перечислю здесь все варианты для полноты, и для вас, чтобы проверить в случае использования других значений по умолчанию.
Вы должны установить следующее в вашем UEFI, под «CPU Features» или «AMD_CBS»:
Если вы не можете найти определенные настройки, такие как «AMD Cool’n’Quiet» или «PPC Adjustment», не беспокойтесь, они имеют второстепенное значение. Некоторые производители материнских плат просто скрывают их.
Профиль питания поставляется в ZIP-архиве, который вы можете скачать, перейдя по ссылке выше (обратите внимание, что профиль питания распространяют только известные интернет-ресурсы). Извлеките содержимое этого архива.
Теперь запустите пакетный файл install.bat.
После завершения установки вы должны увидеть новый план питания в настройках под названием «1usmus Ryzen Universal». Ищите его в «дополнительных схемах питания», если вы не видите это сразу. Активируйте его, перезагрузите систему, и все готово. Возможно, вам придется щелкнуть разделитель «Показать дополнительные схемы электропитания», чтобы открыть список дополнительных схем электропитания в системе.
Результаты
Взглянув на тактовую частоту во время этого тестового прогона, мы можем видеть, что процессор работает на более высоких тактовых частотах — в среднем на 200 МГц выше. Большинство ядер, на которых нет нагрузки, спят, а так же задействованы только лучшие ядра.
Тестовый стенд
Технические характеристики тестовой системы:
Clocking Stretching
Еще одним нюансом мониторинга реальной частоты является Adaptive Clocking Stretching. Технология адаптивного тактирования, которая динамически регулирует время цикла (например, уменьшение частоты), чтобы выдерживать падение напряжения без увеличения напряжения.
Как только спад обнаружен и величина определена, схема растяжения тактового сигнала увеличивает тактовый период (то есть, уменьшая частоту) для компенсации. Более конкретных данных я предоставить вам, к сожалению, не могу из-за NDA, но могу привести пример поколения Steamroller. Порог спада составлял 2,5%, а увеличение такта 7% обеспечивало правильный баланс между поддержанием высоких частот и улучшением Vmin. И последним интересным моментом этой технологии является настройка рястежения циклов. Как только спад обнаружен и величина определена, схема растяжения тактового сигнала увеличивает тактовый период (то есть, уменьшая частоту) для компенсации. То есть процессор может «проглотить» просадку напряжения на определенном количестве циклов, прежде чем задействует Stretching.
В связи с этим всем описанным я не решил травмировать психику моей любимой публики результатами, которые будут серьезно отличаться от обзоров и материалов моих коллег. Но безусловно за этим будущее.
Подводя итоги, хочу сказать, что мы имеем дело с невероятно сложными и технологическими процессорами, балансировка которых порой требует дополнительного времени, и я рад, что мое взаимодействие с AMD позволит вам получить дополнительную производительность и улучить ваш игровой комфорт. В ближайшее время я надеюсь, вы получите обновление UEFI, которые решат все проблемы. Так же я подготовил некоторые советы, которые помогут в будущем избежать некоторых проблем.
То есть вы можете потерять до 150 МГц из-за системы охлаждения. Что касается меня, то я в своих экспериментах использую продукцию EKWB.
Ранжирование ядер и хорошие новости от Роберта Халлок
Как упоминалось ранее, Zen 2 — единственный продукт на рынке, который использует функцию ACPI под названием CPPC2.
AMD использует интерфейс CPPC2 для передачи операционной системе характеристик и конфигураций управления частотой и энергопотреблением ОС и концепции «предпочтительных ядер», которые могут достигать более высоких частот, чем их соседи по CCX.
Многих энтузиастов смутило то обстоятельство, что ранги ядер в журнале ОС могут сильно отличаться от того, что отображается в Ryzen Master. То есть возник вопрос, не является ли это причиной недостаточного boost.
В моем случае этот нюанс тоже имел место быть. Чтобы развеять собственные сомнения, я проверил качество каждого ядра. Результат был положительным, заводские метки ядер были довольно точными.
21 ноября Роберт Халлок, занимающий пост главы технического маркетинга, опубликовал статью на Reddit, в которой он объяснил многие технические детали о boost и ранжировании ядер. Давайте познакомимся с этой информацией:
«1. Прошивка (FW) поддерживает относительный рейтинг ядер. Список поддерживается путем считывания характеристик напряжения/частоты, генерируемых ядрами во время окончательного испытания и сборки.
2. И Windows, и Ryzen Master читают этот рейтинг, сгенерированный FW, чтобы определить самое быстрое ядро в системе.
3. Если вы проверяете ранжирование ядер с помощью команды «sysfs» в Linux, некоторые заметили, что наши ядра ранжируются с шагом, равным примерно в 3%. Это не означает, что одно ядро на 3% быстрее другого.
4. Вместо этого вам нужно знать, что CPPC2 (он же «предпочтительное ядро» или «самое быстрое ядро») представляет собой «непрерывную, абстрактную, не зависящую от единицы шкалу производительности» (спецификация ACPI, раздел 8.4.7). Для перевода: рейтинг ничего не значит, кроме утверждения, какие ядра являются самыми быстрыми. Бывает, что произвольное ранжирование ядер с интервалом
3% идеально подходит для передачи ранжирования в ОС, не оставляя места для ошибок округления, когда этот произвольный масштаб интерпретируется для установки целевого показателя производительности ЦП.
5. Теперь мы находимся в передаче обслуживания ОС. Здесь все становится сложнее. Windows выбирает и устанавливает приоритеты для самого быстрого ядра в прошивке с дополнительным критерием, что в том же CCX должно быть второе ядро, которое почти так же быстро. Планировщик вращается между ними, чтобы одно ядро не выполняло всю однопоточную работу все время (вот почему вы иногда будете видеть, как задача «одного потока» перемещается назад и вперед между двумя различными ядрами). Кроме того, я считаю, что в этом сообществе теперь глубоко понимают, что распределение рабочих нагрузок в CCX, когда это возможно, является оптимальным для Zen 2. Windows 10 May 2019 Update также учитывает это. Таким образом, если Windows собирается выбрать и использовать самое быстрое ядро, ей нужен партнер в том же CCX, чтобы обеспечить соответствие всем критериям для оптимальной производительности. Это наиболее эффективная конфигурация для сценариев 1T и легкопоточных.
6. Ryzen Master, используя те же показания прошивки, выбирает единственную наилучшую кривую напряжение/частота во всем процессоре с точки зрения разгона. Когда вы видите золотую звезду, это строго означает, что это одно ядро с лучшим разгонным потенциалом. Как мы объяснили во время запуска второго поколения Ryzen, мы подумали, что это может быть полезно для людей, пытающихся сделать записи частоты на Ryzen. Чтобы быть кристально чистым: это ядро не может быть оптимальным для повышения производительности, оно не имеет отношения к быстрому выбору ядра ОС, и оно может не соответствовать другим техническим критериям, связанным с выбором оптимальных ядер для автоматического планирования.
7. Поэтому: и Windows, и Ryzen Master подходят для своих нужд, используя один и тот же общий набор информации, предписанный прошивкой. Основной выбор работает так, как задумано и спроектировано, но мы определенно видим и понимаем, что это может быть яснее. Мы надеемся, что этот пост начнет прояснять ситуацию, и. »
Также хочу обратить внимание на самый важный момент, который в будущем должен полностью избавить пользователей от ситуации, когда ядра среднего качества используются для однопоточных задач:
«8. В качестве следующего шага: мы обновим Ryzen Master, чтобы пометить самые быстрые ядра таким же образом, как Windows, чтобы не было путаницы. Пара ядер, помеченная Ryzen Master, будет той же парой, которая была выбрана для лучшей автономной работы.»
То есть, подводя итоги, компания AMD решила перестраховаться от дальнейшего развития материалов о недоброкачественном boost. Но тем не менее за кадром осталось несколько нюансов, о которых вы должны знать ибо они были затронуты вскользь с небольшой порцией дезинформации:
1. Роберт в своей заметке указывает об активном использовании «duty cycle» (дежурная езда на велосипеде между двумя ядрами) во время любой однопоточной нагрузке. При этом максимальный boost априори не может быть максимальным, так как в системе не существует двух одинаковых ядер. Например, у моего экземпляра лучшее ядро достигает 4590 МГц, а его собрат по задачам только 4550 МГц (речь про эффективную частоту). То есть средняя частота будет равняться
4570 МГц. Это действительно наблюдается на последних прошивках, но при этом в профиле питания Ryzen Balanced режим «duty cycle» запрещен по умолчанию. Так от куда же он берется?
Несколько глав назад я вам демонстрировал скриншот работы UEFI с прошивкой SMU 46.24/46.34, в данной прошивке процессор работает без «duty cycle», то есть однопоточная задача полностью, 100% своего времени удерживается лучшим ядром. Это безусловно круто, но по мнению AMD это может привести к точечному перегреву кристалла. И это действительно так, температура выше в среднем на 2–3 градуса, но она отнюдь очень и очень далеко до температуры троттлинга. В моем понимание на данный момент баг SMU или Windows (поверьте, найти крайнего в этом случае очень сложно) представлен публике как крутая особенность.
2. Оба метода оценки ядер по-своему верны. При этом ПО с фирменным API, которое в теории должен знать лучшее свои ядра, знает эти ядра хуже. В следующем обновлении Ryzen Master пользователи получат ранги ядер которые находятся в таблицах ACPI от Windows.
Текущее положение вещей
Любой скандал всегда имеет последствия, как для того, кто его устраивает, так и для компаний, которые хотят его замять, или даже пытаются в интервью опровергнуть проблему. В нашем случае случилось следующее.
AMD рассмотрела проблемы, описанные в статье, и после расследования выяснилось, что основной причиной такого странного поведения повышения boost был планировщик Windows. К счастью, Microsoft выпустила обновление KB4524570, которое своевременно включает исправление для планировщика Windows и значительно улучшило поведение и частоты повышения boost.
Вторая часть проблемы связана с уровнем UEFI, в частности с настройками параметров CPPC и C-State, которые по умолчанию должны находиться в режиме «Включен». Комментируя мой Power Plan, глава технического маркетинга AMD для процессоров Роберт Халлок в интервью PC World подтвердил наши открытия о CPPC и C-State, заявив, что эти функции включены по умолчанию, что, к сожалению, не отражает реальность.
За исключением энтузиастов и опытных пользователей, большинство людей не склонны перепроверять свои настройки UEFI, и могут использовать свой процессор не на полную мощность, просто потому что некоторые производители материнских плат, похоже, не знают, насколько важны эти настройки для повышения производительности процессора. В этой статье я публикую второй план питания для Ryzen, который помогает даже пользователям с последними обновлениями Windows.
Далее я приведу хронологию событий, которая не может не удивить.
И собственно что же изменилось после исправления UEFI и KB4524570. Поехали.
UEFI v160, 1903 без KB4524570, Ryzen Balanced
Этот график отображает состояние системы до обновления прошивки материнской платы и кумулятивного обновления Microsoft от 15 ноября. На нем продемонстрирована однопоточная нагрузка на чистой операционной системе без фоновой активности программ, но при этом задействовано 9 из 12 ядер и наблюдаются явные проблемы с работой CPPC. При этом при каждом перезапуске теста имели boost разные ядра.
Каждое ядро, которое не спит — это автоматический минус для boost, так как для n-поточных нагрузок определен свой лимит по EDC, напряжению и температуре (другие факторы работы AVFS мы не будем рассматривать в этом материале). Напомню, что для игр подобное переключение контекста и прогоны данных между ССX означают статтеры (и, в частности, сниженный фреймрейт в 1% событиях), которые, в свою очередь, влияют на ваш игровой комфорт.
UEFI v170, 1903 с KB4524570, 1usmus Ryzen Universal
Изменения очень серьезные:
Mod Bios by me v130 + SMU 46.24.00, 1903, Ryzen Balanced
Следовательно, необходимо использовать новый подход, называемый эффективными частотами. Этот метод основан на возможности аппаратного обеспечения определять фактическое состояние частот (все их уровни) в течение определенного интервала, включая спящие (остановленные) состояния. Затем программное обеспечение запрашивает счетчик в течение определенного периода опроса, который предоставляет среднее значение всех состояний частот, которые произошли в данном интервале. HWiNFO v6.13-3955 Beta представляет отчеты об этих частотах.
Многие пользователи могут быть удивлены, насколько эти частоты отличаются от традиционных значений. Но, пожалуйста, обратите внимание, что это эффективное значение — это средние частоты за интервал опроса, используемый в HWiNFO.
Я очень благодарен Martin, разработчику HWiNFO за этот вклад.
Также хотел бы поблагодарить Oleg Kasumov и @Kromaatikse за помощь в открытиях, описанным в этом материале.
Выводы
Удивительно, как такой простой программный мод может оказать столь заметное влияние на процессор, и мы даже не разгоняем его. Кастомный план управления питанием универсален, он совместим с любой версией Windows 10 и любым UEFI. Малопоточные рабочие нагрузки теперь распределяется на меньшее количество ядер, которые, как известно, лучше на физическом уровне (более удачные ядра, бининг, ядра с высоким рангом) и которые повышают тактовые частоты лучше других, обеспечивая повышенную энергоэффективность и производительность. Не обделены 2-, 3- и 4-поточные вычисления, теперь нагрузка будет распределяться только среди лучших ядер в CCX, которые имеют более высокий ранг, нежели соседи.
Я бы посоветовал всем пользователям поделиться своим опытом использования этого плана электропитания в комментариях к этой статье. Так же я буду рад ответить на все ваши вопросы.