- Улучшение производительности AMD Ryzen в Windows 10
- Новый план энергопотребления в Windows 10 улучшает производительность процессоров AMD Ryzen
- Процессоры AMD Ryzen и разные схемы электропитания: экспресс-тестирование потенциальных направлений для исследования
- Улучшаем Boost процессоров AMD микроархитектуры Zen 2. Community Update #2: Let’s Talk от 1usmus
- Предпосылки
- P-States и C-States
- Инструкция по установке кастомного профиля питания
- Результаты
- Тестовый стенд
- Clocking Stretching
- Ранжирование ядер и хорошие новости от Роберта Халлок
- Текущее положение вещей
- Выводы
Улучшение производительности AMD Ryzen в Windows 10
AMD говорит, что новый план энергопотребления для Windows 10 ускоряет Ryzen на 21 процент.
Так ли это?
После выпуска процессоров AMD Ryzen были выявлены некоторые проблемы с производительностью в Windows 10.
Например, в некоторых игровых приложениях разница в частоте кадров относительно Windows 7 может достигать 10-15%.
Для исправления недоработки AMD выпустила обновление для исправления сложившейся ситуации.
Речь идет о новом плане энергопотребления для Windows 10, который получил название AMD Ryzen Balanced, так как стандартный профиль Balanced, рекомендуемый системой, не совсем корректно работает с новинками AMD.
Технология AMD SenseMI, впервые появившаяся на Ryzen, позволяет процессорам быстро выполнять тонкие настройки напряжения и частоты для получения максимальной производительности в каждый момент времени.
Изменения могут происходить каждую 1 мс, но это зависит не только от самого процессора.
Такие переходы регулируются параметром P-States — комбинацией частоты и напряжения, запрашиваемой операционной системой.
Соответственно, эффективность работы технологии зависит и от ОС.
Проблема в том, что в профиле Balanced увеличены пороговые значения и задержки между переходами, что не позволяет CPU Ryzen работать максимально эффективно.
Кроме того, в таком режиме «отдыхающие» ядра активируются позже.
Стандартный режим High Perfomance решает проблему, но при этом любой CPU становится менее энергоэффективным.
Новый режим AMD Ryzen Balanced совмещает в себе черты двух стандартных.
В таком режиме операционная система корректнее работает с новыми CPU, что позволяет им оставаться энергоэффективными при достижении максимальной производительности в определённый момент времени.
С новым профилем питания производительность в новом режиме вырастает почти также, как и в High Perfomance, но при этом CPU потребляет меньше энергии.
В некоторых играх режим позволяет добиться прироста производительности почти в 9%, что немало.
План сбалансированного питания AMD Ryzen теперь включен в официальные драйверы чипсета AMD, начиная с версии 17.10.
Просто скачайте и установите последнюю версию пакета драйверов чипсета, и новый план будет автоматически настроен для вас.
Новый план энергопотребления в Windows 10 улучшает производительность процессоров AMD Ryzen
Результаты первых тестов процессоров AMD Ryzen показали, что эти ЦП имеют некоторые проблемы с производительностью в Windows 10. В некоторых игровых приложениях разница в частоте кадров относительно Windows 7 могла достигать 10-15%. Учитывая это, AMD начала выпускать обновления для исправления сложившейся ситуации. Сначала вышел патч для игры Ashes of the Singularity, затем специалисты компании представили очередную версию микрокода AGESA (AMD Generic Encapsulated Software Architecture), ну а теперь речь пойдет о новом плане энергопотребления для Windows 10, который получил название AMD Ryzen Balanced.
Для активации данного профиля, нужно загрузить файл «Ryzen_Balanced_Plan.ppkg» и установить его вручную. Как отмечают представители AMD, в итоге можно получить до 8% увеличения производительности в играх Battlefield 1 и Mafia 3, а средний рост быстродействия составляет 5%.
Что касается механизмов работы, то AMD Ryzen Balanced снижает задержки и пороговые значения во время переключения P-states (P-states представляют собой табличные данные, от P0 до Pn, где каждому конкретному P-состоянию соответствуют свои значения множителя, частоты, напряжения и загрузки ядра). Кроме этого, для наиболее активных ядер отключается парковка. В целом, новый план энергопотребления позволяет получить итоговую производительность на уровне профиля High Performance, при сравнимом потреблении с планом Balanced.
Процессоры AMD Ryzen и разные схемы электропитания: экспресс-тестирование потенциальных направлений для исследования
Выход в свет процессоров AMD Ryzen, как и предполагалось, всколыхнул всю общественность. К сожалению, касалось это не только «большого рывка» в производительности и энергоэффективности, но и странностей в результатах первых тестов. Точнее, иногда наблюдаемых странностей, которые проявлялись далеко не всегда, что в еще большей степени затрудняло их диагностирование. Часть их, как и следовало ожидать, была объяснена нестареющей формулой «В любой непонятной ситуации вали все на Microsoft», после чего некоторые потенциальные покупатели занялись, например, ожиданием «исправления планировщика задач Windows 10». В предыдущий раз такое наблюдалось в 2011-м, кстати, году, только касалось тогда Windows 7 и процессоров AMD FX, а закончилось безрезультатно. Скорее всего, и в этот раз процесс приведет к аналогичному результату, но пока данный вопрос не закрыт.
Вот с управлением электропитанием — ситуация более интересная. Собственно, что Intel, что AMD для тестирования всегда рекомендуют использовать схему «Высокая производительность», но при выходе в свет Ryzen эти рекомендации были особенно настоятельными и мотивировались тем, что сам процессор «умеет» переключать состояния ядер существенно быстрее, чем на это способна Windows при использовании «Сбалансированной» схемы (которая используется в системе по умолчанию, то есть подавляющим большинством пользователей, кроме любителей дотвикаться). Соответственно, применение «Сбалансированной» схемы приводит к потерям производительности — например, из-за того, что при изменении характера нагрузки «спящие» ядра включаются позже, чем нужно, частоты повышаются с задержками, и т. п. Таким образом может снижаться частота кадров в играх, рассматриваемых AMD в качестве одного из целевых назначений новой платформы. Причем снижаться она может как раз тогда, когда производительность «упирается» в процессор, т. е. в наибольшей степени и нужна. Правда, опубликованные AMD (и не только) данные касались почти исключительно игр, да и то речь шла (если не считать отдельных «взбрыков») о менее чем 10% потери производительности, причем в тех ситуациях, когда этой производительности и так было «много».
Так или иначе, информационного шума было достаточно, а точку в истории поставила сама AMD, предложив пользователям новый профиль энергопотребления Windows 10, называющийся AMD Ryzen Balanced, о чем мы уже писали в новостях. По заявлениям компании, он объединил достоинства «стандартных» схем «Высокая производительность» и «Сбалансированная», позволяя процессору и эффективно экономить энергию в простое, и быстро выходить в режим максимальной производительности при необходимости. В опубликованных по этому поводу данных не обошлось, впрочем, без странностей: так, например, средняя частота кадров в игре Mafia III при использовании схемы AMD Ryzen Balanced оказалась более высокой, чем при использовании плана «Высокая производительность». Странности можно объяснить тем, что некоторые настройки нового плана энергопотребления являются даже более агрессивными, чем те, что принято было считать максимально производительными ранее. Также было обещано, что со временем все необходимое будет доступно в Windows изначально — без необходимости что-либо устанавливать вручную, и наступит всеобщее благоденствие.
В общем и целом ничего нового в подобной ситуации нет — на самом деле уже не раз было такое, что радикальное обновление процессорных микро/архитектур требовало соответствующих изменений в программном обеспечении — в том числе и системном. Главное, чтобы все ограничивалось именно ПО, поскольку аппаратные «шероховатости» по понятным причинам если и ликвидируются, то только с переходом на новый степпинг. В любом случае, даже если на самом деле практический эффект всех оптимизаций и невелик, дополнительный шум вокруг платформы еще никому не вредил — главное, чтобы, опять же, он не касался каких-то неустранимых особенностей процессоров и других микросхем.
Мы же заинтересовались данной темой немного по другому поводу: как уже было сказано выше, все действо разворачивалось вокруг игр, да и то разница получалась небольшой. Изменилась, к примеру, у одних коллег частота кадров в GTA V со 130 до 139 — и что? 🙂 Для простого сравнения циферок интересно; вот только и то, и другое по чисто техническим причинам «много». Разогнанный Ryzen 7 1700 все равно «не догнал» в этой игре Core i7-7700K в штатном режиме, но это неважно: оба хороши. И их более медленные «собратья», причем даже с более медленной видеокартой, в таком режиме тоже хороши. А есть ли ситуации, когда наблюдается более радикальное изменение частоты кадров в зависимости от плана электропитания? Навскидку такое должно в первую очередь происходить не со средним, а с минимальным FPS — именно он существенно зависит от процессора.
Кроме того, не совсем понятно было, что происходит с прочим программным обеспечением: эту тему вообще никто не трогал. Понятно, что в устоявшемся режиме, который, по сути, и реализует большинство бенчмарков, различий быть не должно, но все же. Да и вопрос энергопотребления тоже остался в стороне от обсуждений проблемы (неважно — реальной или виртуальной). Любопытство при наличии возможности положено удовлетворять 🙂 А возможность имелась: как раз был протестирован Ryzen 5 1600X, уже претендующий в какой-то степени и на массовый рынок. В итоге мы провели несколько дополнительных тестов с использованием стандартных схем питания «Высокая производительность» и «Сбалансированная».
Начнем с приложений. Все проверять не стали, но это и не нужно — тройки типичных хватит. На следующей диаграмме приведено время выполнения в секундах безо всякой нормировки.
Итак, в MediaCoder производительность оказалась вообще одинаковой. И немудрено: транскодирование видео, отлично загружающее работой все 12 потоков, является практически пиковой нагрузкой. А вот две другие программы, в которых есть не только вычисления, и не только активные, при использовании плана «Высокая производительность» отработали чуть быстрее. Эффект, впрочем, невелик — менее 2%, — но он есть и устойчиво обнаруживается.
Впрочем, это же верно и для энергопотребления процессора: MediaCoder в любом случае «выжирает» примерно столько, сколько можно предположить, исходя из теплового пакета (т. е. в режиме полной нагрузки какой-никакой смысл он имеет и может использоваться для грубой оценки). В двух других приложениях потребляемая процессором электрическая мощность намного ниже и неплохо коррелирует с изменением производительности, но влияние плана на результат опять же незначительно.
Обычно мы оперируем расходами энергии по обоим «интерфейсам» питания (поскольку для некоторых платформ используется не только выделенная линия 12 В), но и тут, как видим, изменений никаких. Примерно то же самое. А с учетом погрешностей измерений — абсолютно то же самое.
Средняя частота кадров в играх почти не меняется — наибольший выигрыш демонстрирует однопоточный WoT, а в Metro и Thief, если докапываться до каждой цифры, план «Высокая производительность» и вовсе вреден. Понятно, впрочем, что скорость в режиме максимальных настроек в первую очередь определяется видеокартой. И поскольку мы использовали Radeon R9 380, то для получения нормальных результатов даже в этих не слишком новых играх пришлось снизить разрешение с FHD до HD. В тестах по новой методике будет применяться более быстрый видеоадаптер и более требовательные игры, но и из полученных результатов понятно, что никакой практически заметной разницы нет.
Однако, как и предполагалось, это не совсем верно для минимальной частоты кадров, которую мы обычно не используем, но тоже измеряем. Правда, из четырех отобранных игр заметным образом на изменение плана питания реагирует лишь Metro — но как раз в этой игре разница между минимальной и средней частотой кадров очень велика. Можно, конечно, долго рассуждать о том, есть ли с точки зрения комфорта разница между кратковременными просадками до 15 и 19 FPS, но объективно это более 20%, т. е. где-то на порядок больше, чем во всех остальных встретившихся в тестировании случаях. А значит, и такое тоже бывает, и это нужно учитывать. Возможно, кстати, учитывать нужно не только в случае Ryzen, но и с другими процессорами, так что если частота кадров в какой-либо игре местами становится неприемлемо низкой, имеет смысл в первую очередь «подкрутить» настройки энергопотребления (если это еще не сделано), благо способ бесплатный. Более подробное изучение вопроса мы отложим «на потом», а главным выводом на данный момент можно считать то, что эффект вообще существует.
Что же касается производительности в прикладном ПО, а особенно в той его части, которая обычно ассоциируется с ресурсоемкими приложениями, то. Само по себе название схемы электропитания «Высокая производительность», пожалуй, не соответствует действительности и приводит лишь к появлению типовых городских легенд. По сути, все, что эта схема может дать — несколько сократить задержки при работе за компьютером, но ограничив при этом его способность экономить энергию в простое. Это может быть актуально при постоянном изменении характера нагрузки на процессор, особенно многоядерный, особенно при использовании большого количества приложений. В общем, пожалуй, наиболее приближенный к реальности сценарий — сервер. Но при выборе и настройке, к примеру, рендер-станции, которая должна считать проекты часами, особого значения это все не имеет: схема «Высокая производительность» вовсе не повысит производительность, а «Сбалансированная» — не сэкономит энергию. Между тем, «тяжелая» длительная нагрузка с любой схемой «выжмет» из процессора все, на что он способен. Но не более того.
Улучшаем 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.
- Уменьшение напряжения/частоты: 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-архиве, который вы можете скачать, перейдя по ссылке выше (обратите внимание, что профиль питания распространяют только известные интернет-ресурсы). Извлеките содержимое этого архива.
Теперь запустите пакетный файл install.bat.
После завершения установки вы должны увидеть новый план питания в настройках под названием «1usmus Ryzen Universal». Ищите его в «дополнительных схемах питания», если вы не видите это сразу. Активируйте его, перезагрузите систему, и все готово. Возможно, вам придется щелкнуть разделитель «Показать дополнительные схемы электропитания», чтобы открыть список дополнительных схем электропитания в системе.
Результаты
Взглянув на тактовую частоту во время этого тестового прогона, мы можем видеть, что процессор работает на более высоких тактовых частотах — в среднем на 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. Технология адаптивного тактирования, которая динамически регулирует время цикла (например, уменьшение частоты), чтобы выдерживать падение напряжения без увеличения напряжения.
Как только спад обнаружен и величина определена, схема растяжения тактового сигнала увеличивает тактовый период (то есть, уменьшая частоту) для компенсации. Более конкретных данных я предоставить вам, к сожалению, не могу из-за 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 опубликовали таблицу зависимости частоты от температуры.
То есть вы можете потерять до 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.
Далее я приведу хронологию событий, которая не может не удивить.
- 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. Поехали.
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
Изменения очень серьезные:
- Однопоточная нагрузка находится всегда в пределах одного CCX.
- Максимальный boost приходится на лучшее ядро, то есть имеем корректную работу CPPC.
- 10–11 спящих ядер во время однопоточной нагрузки.
- Попытка планировщиком Windows удерживать однопоточную нагрузку на одном ядре. Хотя, до идеала, который я видел в SMU 46.24.00 (UEFI для рецензентов) далеко.
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.
Я очень благодарен Martin, разработчику HWiNFO за этот вклад.
Также хотел бы поблагодарить Oleg Kasumov и @Kromaatikse за помощь в открытиях, описанным в этом материале.
Выводы
Удивительно, как такой простой программный мод может оказать столь заметное влияние на процессор, и мы даже не разгоняем его. Кастомный план управления питанием универсален, он совместим с любой версией Windows 10 и любым UEFI. Малопоточные рабочие нагрузки теперь распределяется на меньшее количество ядер, которые, как известно, лучше на физическом уровне (более удачные ядра, бининг, ядра с высоким рангом) и которые повышают тактовые частоты лучше других, обеспечивая повышенную энергоэффективность и производительность. Не обделены 2-, 3- и 4-поточные вычисления, теперь нагрузка будет распределяться только среди лучших ядер в CCX, которые имеют более высокий ранг, нежели соседи.
Я бы посоветовал всем пользователям поделиться своим опытом использования этого плана электропитания в комментариях к этой статье. Так же я буду рад ответить на все ваши вопросы.