Улучшаем Boost процессоров AMD микроархитектуры Zen 2. Community Update #2: Let’s Talk от 1usmus

В этой статье я поделюсь с вами индивидуальным планом электропитания для Windows, который должен оказать существенное влияние на поведение boost процессоров Ryzen 3-го поколения, способность использовать предпочтительные ядра, что даст в итоге более высокие частоты, чем вы имеете сейчас (разумеется, если вы испытываете проблему), а так же улучшит фреймрейт-динамику в играх.

AMD Zen 2

Процессоры 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 на самом деле довольно глупа.

Улучшаем Boost процессоров AMD микроархитектуры Zen 2

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.
  • Уменьшение напряжения/частоты: P-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»:

  • Global C-state Control = Enabled;
  • Power Supply Idle Control = Low Current Idle;
  • CPPC = Enabled;
  • CPPC Preferred Cores = Enabled;
  • AMD Cool'n'Quiet = Enabled;
  • PPC Adjustment = PState 0.

Если вы не можете найти определенные настройки, такие как «AMD Cool'n'Quiet» или «PPC Adjustment», не беспокойтесь, они имеют второстепенное значение. Некоторые производители материнских плат просто скрывают их.

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

Улучшаем Boost процессоров AMD микроархитектуры Zen 2

Теперь запустите пакетный файл install.bat.

Улучшаем Boost процессоров AMD микроархитектуры Zen 2

После завершения установки вы должны увидеть новый план питания в настройках под названием «1usmus Ryzen Universal». Ищите его в «дополнительных схемах питания», если вы не видите это сразу. Активируйте его, перезагрузите систему, и все готово. Возможно, вам придется щелкнуть разделитель «Показать дополнительные схемы электропитания», чтобы открыть список дополнительных схем электропитания в системе.

Результаты

Улучшаем Boost процессоров AMD микроархитектуры Zen 2Улучшаем Boost процессоров AMD микроархитектуры Zen 2

Взглянув на тактовую частоту во время этого тестового прогона, мы можем видеть, что процессор работает на более высоких тактовых частотах — в среднем на 200 МГц выше. Большинство ядер, на которых нет нагрузки, спят, а так же задействованы только лучшие ядра.

Другие результаты:

  • PPT: 33% -> 24% (–37,5%);
  • TDC: 20% -> 10% (–50%);
  • EDC: 27% -> 7% (–74%);
  • CB15 ST : 207 -> 217 (+4,7%);
  • CB20 ST : 514 -> 537 (+4,3%).

Тестовый стенд

Технические характеристики тестовой системы:

  • процессор: AMD Ryzen 9 3900X;
  • охлаждение: кастом на базе EKWB;
  • материнская плата: MSI MEG X570 Godlike (UEFI 7C34v160, UEFI 7C34v170 AGESA 1.0.0.4В);
  • память: G.Skill Trident Z Royal F4-3600C16D-16GTRG (DDR4-3600, 16-16-16-36, 1,35 В);
  • видеокарта: MSI GeForce GTX 1080 TI GAMING X 11G;
  • накопитель: Gigabyte Aorus NVMe Gen4 SSD 2TB
  • операционная система: Windows 10 x64 1903 и 1909;
  • драйвер для чипсета: AMD 1.9.27.1033.

Clocking Stretching

Еще одним нюансом мониторинга реальной частоты является Adaptive Clocking Stretching. Технология адаптивного тактирования, которая динамически регулирует время цикла (например, уменьшение частоты), чтобы выдерживать падение напряжения без увеличения напряжения.

Улучшаем Boost процессоров AMD микроархитектуры Zen 2

Как только спад обнаружен и величина определена, схема растяжения тактового сигнала увеличивает тактовый период (то есть, уменьшая частоту) для компенсации. Более конкретных данных я предоставить вам, к сожалению, не могу из-за NDA, но могу привести пример поколения Steamroller. Порог спада составлял 2,5%, а увеличение такта 7% обеспечивало правильный баланс между поддержанием высоких частот и улучшением Vmin. И последним интересным моментом этой технологии является настройка рястежения циклов. Как только спад обнаружен и величина определена, схема растяжения тактового сигнала увеличивает тактовый период (то есть, уменьшая частоту) для компенсации. То есть процессор может «проглотить» просадку напряжения на определенном количестве циклов, прежде чем задействует Stretching.

В связи с этим всем описанным я не решил травмировать психику моей любимой публики результатами, которые будут серьезно отличаться от обзоров и материалов моих коллег. Но безусловно за этим будущее.

Подводя итоги, хочу сказать, что мы имеем дело с невероятно сложными и технологическими процессорами, балансировка которых порой требует дополнительного времени, и я рад, что мое взаимодействие с AMD позволит вам получить дополнительную производительность и улучить ваш игровой комфорт. В ближайшее время я надеюсь, вы получите обновление UEFI, которые решат все проблемы. Так же я подготовил некоторые советы, которые помогут в будущем избежать некоторых проблем.

  • Следите за обновлениями операционной системы и UEFI. О проблемах и решениях серьезных проблем пользователи никогда не будут оповещены через медийные ресуры.
  • Делайте всегда Clear CMOS после установки нового UEFI. В противном случае Windows может не увидеть изменения в SMU, предназначенные для внутренних таблиц ACPI OS.
  • Следите за обновлениями Ryzen Chipset Drivers. Именно эти драйвера являются самым главным посредником между BIOS и OS, а так же косвенным образом влияют на планировщик OS.
  • Global C-state Control, CPPC Preferred Cores и AMD Cool'n'Quiet всегда должны быть Enabled.
  • Система охлаждения. Boost-частота процессоров Zen 2 очень сильно зависит от температуры. К примеру, мои коллеги из Gamer Nexus опубликовали таблицу зависимости частоты от температуры.

Улучшаем Boost процессоров AMD микроархитектуры Zen 2

То есть вы можете потерять до 150 МГц из-за системы охлаждения. Что касается меня, то я в своих экспериментах использую продукцию EKWB.

Ранжирование ядер и хорошие новости от Роберта Халлок

Как упоминалось ранее, Zen 2 — единственный продукт на рынке, который использует функцию ACPI под названием CPPC2.

AMD использует интерфейс CPPC2 для передачи операционной системе характеристик и конфигураций управления частотой и энергопотреблением ОС и концепции «предпочтительных ядер», которые могут достигать более высоких частот, чем их соседи по CCX.

Многих энтузиастов смутило то обстоятельство, что ранги ядер в журнале ОС могут сильно отличаться от того, что отображается в Ryzen Master. То есть возник вопрос, не является ли это причиной недостаточного boost.

Улучшаем Boost процессоров AMD микроархитектуры Zen 2

В моем случае этот нюанс тоже имел место быть. Чтобы развеять собственные сомнения, я проверил качество каждого ядра. Результат был положительным, заводские метки ядер были довольно точными.

Улучшаем Boost процессоров AMD микроархитектуры Zen 2

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.

Далее я приведу хронологию событий, которая не может не удивить.

  • 4 ноября — публикация материала.
  • 7 ноября — релиз в срочном порядке UEFI v170 для материнской платы MSI MEG X570 Godlike. В частности это было исправление работы CPPC и включение по умолчанию C Global State и AMD Cool & Quiet, но в заметке к релизу конечно об этом ни слова.
  • 11 ноября — компания Microsoft в срочном порядке выпускает кумулятивное обновление KB4524570. В заметках к релизу так же ни слова об исправлениях связанных с ACPI и планировщике задач.
  • 25 ноября — релиз новых драйверов для чипсета 1.11.22.0454. Некоторы пользователи отметили что проблема с и использованием лучших ядер и boost полностью устранена.

И собственно что же изменилось после исправления UEFI и KB4524570. Поехали.

Улучшаем Boost процессоров AMD микроархитектуры Zen 2

UEFI v160, 1903 без KB4524570, Ryzen Balanced

Этот график отображает состояние системы до обновления прошивки материнской платы и кумулятивного обновления Microsoft от 15 ноября. На нем продемонстрирована однопоточная нагрузка на чистой операционной системе без фоновой активности программ, но при этом задействовано 9 из 12 ядер и наблюдаются явные проблемы с работой CPPC. При этом при каждом перезапуске теста имели boost разные ядра.

Каждое ядро, которое не спит — это автоматический минус для boost, так как для n-поточных нагрузок определен свой лимит по EDC, напряжению и температуре (другие факторы работы AVFS мы не будем рассматривать в этом материале). Напомню, что для игр подобное переключение контекста и прогоны данных между ССX означают статтеры (и, в частности, сниженный фреймрейт в 1% событиях), которые, в свою очередь, влияют на ваш игровой комфорт.

Улучшаем Boost процессоров AMD микроархитектуры Zen 2

UEFI v170, 1903 с KB4524570, 1usmus Ryzen Universal

Изменения очень серьезные:

  • Однопоточная нагрузка находится всегда в пределах одного CCX.
  •  Максимальный boost приходится на лучшее ядро, то есть имеем корректную работу CPPC.
  • 10–11 спящих ядер во время однопоточной нагрузки.
  • Попытка планировщиком Windows удерживать однопоточную нагрузку на одном ядре. Хотя, до идеала, который я видел в SMU 46.24.00 (UEFI для рецензентов) далеко.
Улучшаем Boost процессоров AMD микроархитектуры Zen 2

Mod Bios by me v130 + SMU 46.24.00, 1903, Ryzen Balanced

Самые внимательные из вас могут заметить, что свежий SMU 46.54.00, который поставляется с AGESA 1004B, имеет урезанные частоты для всех ядер относительно старого UEFI для рецензентов. Если рассмотреть CCD1 , то мы имеем –75, –25, +25, –50, –25, –25 МГц для каждого ядра соответственно. Безусловно, частота не является индикатором реальной производительности и в данном случае для нас куда более важнее удержание потока на одном, определённо удачном ядре с сохранением при этом режима сна для других ядер. Также хочу упомянуть о том, что результаты замеров частоты являются достаточно грубыми, так как текущий метод мониторинга основан на знании фактических шинных тактовых импульсов (BCLK) и выборки коэффициентов ядра в определенные моменты времени. Полученные частоты являются тогда простым результатом отношения множителя к BCLK. Такой подход в прошлом работал довольно хорошо, но его уже недостаточно. За прошедшие годы центральные процессоры стали очень динамичными компонентами, которые могут изменять свои рабочие параметры сотни раз в секунду в зависимости от нескольких факторов (CPPC2, которая появилась в Zen 2), в том числе величины рабочей нагрузки, температурных пределов, теплового/виртуального тока (EDC) и пределов мощности, turbo-коэффициентов, динамических TDP и т.д. Хотя этот метод по-прежнему представляет фактические значения тактовых импульсов и соотношения, о которых сообщается, соответствуют определенным P-State, но этого недостаточно, чтобы обеспечить хороший обзор динамики ЦП, особенно когда параметры колеблются с гораздо более высокой частотой, чем любое программное обеспечение способно мониторить этот процесс. Другим недостатком является то, что ядра современных ЦП, не имеющие рабочей нагрузки, приостанавливаются (более низкие C-State). В том случае, когда программное обеспечение пытается опросить их статус, оно на короткое время разбудит их, и, таким образом, полученные частоты не будут соответствовать спящему состоянию.

Следовательно, необходимо использовать новый подход, называемый эффективными частотами. Этот метод основан на возможности аппаратного обеспечения определять фактическое состояние частот (все их уровни) в течение определенного интервала, включая спящие (остановленные) состояния. Затем программное обеспечение запрашивает счетчик в течение определенного периода опроса, который предоставляет среднее значение всех состояний частот, которые произошли в данном интервале. HWiNFO v6.13-3955 Beta представляет отчеты об этих частотах.

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

Улучшаем Boost процессоров AMD микроархитектуры Zen 2

Я очень благодарен Martin, разработчику HWiNFO за этот вклад.

Также хотел бы поблагодарить Oleg Kasumov и @Kromaatikse за помощь в открытиях, описанным в этом материале.

Выводы

Удивительно, как такой простой программный мод может оказать столь заметное влияние на процессор, и мы даже не разгоняем его. Кастомный план управления питанием универсален, он совместим с любой версией Windows 10 и любым UEFI. Малопоточные рабочие нагрузки теперь распределяется на меньшее количество ядер, которые, как известно, лучше на физическом уровне (более удачные ядра, бининг, ядра с высоким рангом) и которые повышают тактовые частоты лучше других, обеспечивая повышенную энергоэффективность и производительность. Не обделены 2-, 3- и 4-поточные вычисления, теперь нагрузка будет распределяться только среди лучших ядер в CCX, которые имеют более высокий ранг, нежели соседи.

Я бы посоветовал всем пользователям поделиться своим опытом использования этого плана электропитания в комментариях к этой статье. Так же я буду рад ответить на все ваши вопросы.