На днях таки взял 3900Х решив забить на 3950Х. И успел тут поработать напильником, потестить-поковырять. Писанины будет много. Лаконичностью не обладаю (больше графоманством
). Больше может для себя пишу все это что бы структурировать всю боль за несколько дней и войну с частотами и распределением нагрузки по потокам...
А изначально хотел посмотреть что да как менялось со времен релиза Zen2, BIOS-ов с AGESA 1.0.0.2 и старых SMU-прошивок и чипсет драйверов. Если ответить вкратце - что бы сэкономить ваше время, то в большей степени на дистанции AMD/Microsoft/Умельцы/Вендоры материнок - допилили разгон памяти и планировщик задач и распределение нагрузок в ОС. Все остальное, на самом деле - мелочи, типа подстройки кривых буста, энергорежимы в целом незначительно отразились на производительности (особенно для рендринга). Т.е в теории можно ничего вообще не обновлять ничего не настраивать, и потеряете вы от силы там 3-4% да и то не во всех случаях.
Дальше графоманство :
Сравнивая AGESA 1.0.0.2 (X470 Taichi 3.43 BIOS), старые чипсет драйвера и 1903 WinVer (версия винды), старый AMD Power Plan без поддержки CPPC2, я получал :
CBR15 - 3100-3150 / 190-199
CBR20 - 7175-7235 / 485-500
(Результаты плавают туда-сюда от прогона к прогону)
Планировщик работает неадекватно и при однопоточной нагрузке выбирает иногда неудачные ядра и регулярно (каждые 3-4 бакета) во время теста перекидывает нагрузку на разные ядра, порой залезая в ядра из CCD#2 которые у всех 3900Х менее удачные чем CCD#1. Соответственно и частоты просаживаются и в игровых и смешанных нагрузках фреймтайм не особо равномерный. Без полноценной поддержки CPPC2 частота переключения ядер с стенд-бай режима в активное и наращивание частот не позволяет плавно распределять нагрузку между ними. Т.е ядро загружено на 1% но является самым производительным а система считает его занятым, ищет спящее ядро без нагрузке и не взирая на то что оно может быть самым медленным кидает эту задачу на него. Ну эт так, очень образно и примерно. Microsoft и AMD, стремятся к тому что бы все же приоритетно использовались и нагружались самые удачные (быстрые ядра). Их можно увидеть в Ryzen Master например или в том же HWInfo64 - > http://prntscr.com/pyg880
Вот замеры на которых видно явную разницу (смотреть на Core T Usage) :
https://i.imgur.com/lUbaqOW.jpg (До оптимизаций/обновлений и настроек)
https://i.imgur.com/w5brf8w.jpg (Итоговый результат)
(Один скрин делал с 1440p монитора другой случайно с 1080p, извиняюсь за мыло).
Замеры делались в одинаковых условиях. Игра Call of Duty Modern Warfare 2019 при 120-150FPS, одинаковая карта, одинаковый режим, отрезок в ~8 минут беспрерывной игры (старт записи в начале игры, скриншот в конце игры). Видно что даже Total CPU Usage по-выше стал, соответственно фреймтайм в игре стал идеально ровным и без бугорков и "шереховатостей". И система меньше перекидывает нагрузки туда-сюда с разных ядер. А выполняет большую часть задач на более производительных ядрах.
Итоговый результат был получен на Beta BIOS-е 3.75 версии с AGESA 1.0.0.4 Patch B, SMU 46.54.0 и с установкой микро-обновления Windows до 1909 версии который чуть улучшает работу планировщика (основная фишка 1909 винды). Хотя момент этот спорный про 1909 винду, местами оно работает все еще не идеально. Собственно, поверх этого всего дела пошел в ход Power Plan от 1usmus-а - https://www.techpowerup.com/review/1usmus-custom-power-plan-for-ryzen-3000-zen-2-processors/ Я бы скинул то что на Русском но там без деталей, ну ладно, вот - https://www.overclockers.ua/news/hardware/2019-11-05/125599/
В Биосе были включены эти настройки :
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
А затем активирован его план. Все это в совокупности и дало результат что в рабочем софте, например в 3Ds Max, играх, смешанных нагрузках. Или играх во время рендера идущего фоном - нагрузки распределяются более менее адекватно. Движок Call of Duty принудительно при запуске игры ставит себе высокий приоритет, и нагрузка ложится больше на CCD#1 и затрагивает больше удачных ядер, и лучше концентрируется на них. А идущий рендер в 3Ds Max по умолчанию с нормальным приоритетом по большей степени задействует более медленные ядра в CCD#2 и пару ядер в CCD#1. В результате игра идеально плавно работает, на старой AGESA, Винде, в дефолтном AMD Power Plan-е - все это реализовать было бы скорее всего невозможно. Или приходилось бы использовать какую нить Process Lasso, что как по мне еще больший костыль чем все эти манипуляции. В целом конечно можно и без всего этого было играть без рендера, отображаемый мгновенный FPS не сильно менялся но вот фреймтайм график был шереховатым и на 144гц мониторе это ощущалось
.
Кстати в результате всех обновлений и твиков вышло :
CBR15 - 3215-3225 / 212-214
CBR20 - 7290-7310 / 518-520
(Выходит меньший разброс между прогонами). Кстати помимо всего этого в простое снизилась температура с ~40 до 27-30 градусов и потребление на 10вт стало меньше у ядер процессора.
Так же прошу обратить внимание на очень важное замечание :
Цитата 1usmus :
Возьмите себе за правило, с каждым биосом переустаналивать чипсет драйвера. Технология CPPC2 довольно требовательная к согласованию работы Windows и BIOS. Ввиду того что экосистема BIOS не способна подстроиться под Windows - это нужно делать вручную путем деинсталляции чипсета драйвера и установки с каждым обновлением SMU.
По поводу разгона памяти. Я пока в процессе, вникаю. Но сразу скажу пошло все не так гладко как на 2700X и старых Биосах. Ну это мягко говоря. Про старый разгон я тут отписывался - https://www.reddit.com/r/Amd/comments/dkd0gj/128gb_udimm_ram_x470_taichi_2700x/
Но вот как я поменял процессор. Так большая часть этих настроек просто не подошла. Изменения в сигналах и сопротивлениях настолько радикальные что придется все по новой перепроверять а у меня пока сил нету. Потом как нить для себя попробую погнать эту память (так как у нее есть потенциал)
.
Было на 2700X :
RTT_NOM - Disabled, RTT_WR - RZQ/3, RTT_PARK - RZQ/1.
CAD_BUS - 24/24/24/24. ProcODT - 53,3 Ohms.
Стало на 3900X :
RTT_NOM - RZQ/7, RTT_WR - RZQ/2, RTT_PARK - RZQ/1.
CAD_BUS - 24/20/24/24. ProcODT - 36,9 Ohms.
И разумеется не до конца понятно оптимальные ли это настройки.
Плюс появились доп настройки за которыми нужно следить. CLDO VDDG, CLDO VDDP, и частота FCLK.
В результате на быструю руку я смог получить практически идентичные результаты по ПСП/Задержкам как были на 2700Х. Разумеется задержки при обращении к памяти у Zen2 выше, и у меня по выше получились, правда всего на 2ns почему то... К слову говоря Ryzen Timing Calculator с какого то перепугу мне советовал отвязывать FCLK от MCLK. Но так только хуже получалось. При 3600Mhz ОЗУ (FCLK 1800) 72ns Latency, при 3600Mhz ОЗУ (FCLK 1933) 81ns Latency. Уж не знаю при каких обстоятельствах стоит гнать отдельно FCLK... Может когда у вас память на 2933Mhz то быть может FCLK 1933 даст ниже задержки. Но это не точно.
Про частоты/бусты... Как же упорно я пытался понять что к чему и где же эти 4.6ггц. В общем то если не расписывать то что уже тысячи раз было сказано на просторах интернета
я подытожу вкратце. По личным замерам и наблюдениям, разумеется.
1.) Максимальные нагрузки на конвейер процессора с AVX инструкциями - ~3.9ггц | Конечно если температуры до 90 градусов. Это всякие там LinX Linpack (с библиотеками 2019 года), Prime95 (в SmallFFT режиме) ну и всякие Y-Cruncher.
2.) Тяжелые нагрузки на конвейер процессора AVX инструкциями - ~4.05ггц | Это рендеры на подобии Corona 1.7-5, Cinebench R20 и не самые тяжелые компиляторы/кодировщики видео. В общем нагрузки на 100% которые тем не менее не могут так плотно утилизировать процессорный конвейер.
3.) Плотные нагрузки без AVX и современных SSE - ~4.15ггц | Это например всякие старенькие версии V-Ray еще без Embree рейкастера, Cinebench R11.5, R15.
4.) Смешанные нагрузки на большую часть ядер с AVX - ~4.25ггц | Ну например Call of Duty движок уже несколько поколений использует AVX. И в придачу ко всему вы стримите процесс через CPU, то примерно такую частоту и получите.
5.) Легкие игровые нагрузки без AVX - ~4.35ггц | С кратковременными скачками до 4.45ггц. Без всяких стримов. Например CS:GO и другие игры которые не сильно упарываются в процессор.
6.) (не считается ) Есть еще небольшое исключение, когда из CBR15 можно предел выжать и получить порядка ~4.575ггц в однопоточном режиме. Но там махинации с Offset-ами вольтажей и обманом PBO, сдвигом EDC лимита. И работало это на 0.3 Агесе, не проверял но видел множество результатов подобных.
И что получается... Назревает вопрос... А где 4.6ггц искать то у 3900X ?
А вот оказывается что 4.6ггц (и даже в моем случае 4.65ггц) можно получить например если вы сидите в Paint-е, и задумались секунд на 5 и тут одно самое удачное ядро на доли секунд может прыгнуть до 4.65ггц а второе самое удачное до 4.55-4.6ггц. Или когда вы смотрите фильм и поставили его на паузу, когда сидите в браузере и ничего не делаете, не двигаете мышкой (это важно и это не та фишка про 95-ую винду
) и никаких видео в вкладках не запущено. Или когда просто музыку слушаете. Короче в большинстве случаев 4.6-4.65ггц вы видите когда на компьютере ничего не происходит. И судя по той массе информации что я вычитал - это и есть то как AMD представляет себе буст до 4.6ггц у 3900Х ))
Роберт Хэллок вообще говорит что у них нету такого понятия как максимальный буст на ядро - https://twitter.com/Thracks/status/1138789078986502145 А чуть позже добавили ряд уточнений по бусту - https://www.amd.com/en/support/kb/faq/cpu-pb2 (а еще чуть позже в этот список добавили пару пунктов, а именно Proper firmware and software configuration и Operating system optimizations). Короче если хотите получить выше частоты - то все эти звезды на небе должны сойтись идеально и тогда мол все будет (на самом деле нет).
Нет. Ну разумеется можно взять какой нить тест на легких инструкциях, прицепить его к одному потоку (без SMT), и сделать что бы он один поток грузил скажем на 50%, и при условии что это будет самое удачное ядро (в моем случае это ядро #4). Тогда будет 4.65ггц даже. При нагрузке на два потока (с SMT) на этом ядре будет 4.6ггц.
Как по мне, лучше бы AMD так и написали на коробочке у 3900Х - 4.4Ггц. А напоследок по этой теме могу сказать что... Все это не важно в итоге Ведь важна производительность а не какая там частота, IPC и тд. Производительность у 3900Х просто по всем фронтам опережает 2700Х во всех типах задач без исключений. А я преследовал лишь личный интерес к этой теме. Ведь обсуждение частот и буста у Zen2 это была №1 тема на релизе. И только затем обсуждения разгона, температуры и всяких странностей сырых биосов.
P.S. Кстати. В HWInfo64 свежей версии появились показатели "эффективной частоты". Думается мне рано или поздно это понятие войдет в обиход. Ведь современные процессоры сотни и сотни раз в секунду меняют частоты и на разные операциях могут менять эти частоты, актуальный софт просто не в состоянии отображать эти данные по старым методам. Процессор может за секунду 90% времени работать на 2ггц, а датчик получит данные с остальных 10% времени где процессор схавал сложную задачу выдав 4.6ггц, ну так, к примеру... А эффективная частота показывает средние значения за промежуток времени за секунду например (можно и больше сделать).
P.P.S. С разгоном процессора по CCX/CCD, Offset-ам и PBO я пока еще в раздумиях. На данный момент 3900X прогревается в короне до 74-75 градусов по самому горячем CCD#1 на Nuctua NH-D15S (с двумя промышленными 140мм Noctua вертушками которые маслают на 40% от 3000RPM). Чет я сомневаюсь что есть смысл гнать проц ради 8-9% (в лучшем случае 10-11%) что бы потом сидеть на 95 градусах в рендере. Сомнительно. Потому я больше внимания сконцентрировал не на разгоне системы а на настройках/твиках и тд.