Система

Видеоядро, процессор, разгон и снижение напряжения

Как SkillFishOS управляет частотами, напряжениями и температурами BC-250 — с настоящими числами, снятыми с железа.

На обычном APU частоты настраивают через sysfs драйвера amdgpu. На BC-250 это не работает: управление идёт через SMU (System Management Unit) и требует отдельных инструментов. SkillFishOS собирает их все вместе, с готовой безопасной кривой и системой защиты от перегрева.

Предупреждение: кремниевая лотерея. Каждое число на этой странице снято с нашей BC-250. Все платы разные: одна возьмёт более крутую кривую, другая менее. Поэтому SkillFishOS загружается с заводской кривой (профиль Performance, потолок 2100 МГц) и даёт её менять через Tuner, который проверяет каждую кривую на вашей плате автоматическим 25-секундным тестом и сам откатывается, если она не держится.

Кривая напряжение/частота и три профиля

кривая напряжения и частоты в Tuner, с таблицей точек и тремя профилями

Tuner управляет видеоядром через кривую напряжение/частота: МГц по горизонтали, милливольты по вертикали, точки тянут по графику или вписывают в таблицу рядом. Три профиля двигают потолок кривой:

Профиль Потолок GPU Примечания
Cautious 1850 МГц Оптимальная точка со штатным охлаждением: почти те же кадры, на десять градусов холоднее
Balanced 2000 МГц Компромисс между частотой и нагревом
Performance 2100 МГц Кривая из пятнадцати точек, снятая на плате для разработки — та, что мы поставляем по умолчанию

Применить — это проба, а не мгновенная запись. Кривая, которая просит слишком мало напряжения, вешает плату, а на BC-250 зависание снимается только отключением питания. Поэтому Применить держит прежнюю кривую на диске, пробует кандидата 25 секунд и ждёт подтверждения: нажмите Оставить — и она запишется по-настоящему; иначе — или если плата зависла и сама перезагрузилась — при старте вернётся прежняя кривая.

Регулятор V/F видеоядра

Частотами видеоядра управляет skillfish-vf-governor — наша служба, которая забирает такт и напряжение у штатного регулятора и ведёт их напрямую через SMU, удерживая потолок частоты, который нагрев и потребление могут опустить, а когда плата успокоится — вернуть обратно. Отдельный процесс, skillfish-vf-watchdog, берёт управление на себя, если регулятор падает с принудительно выставленным тактом.

Измерено на Black Myth: Wukong, одна и та же сессия, одни и те же 84 °C в обоих прогонах: +4,5 % на холодной плате, +11 % на прогретой — против штатного регулятора. Преимущество растёт с температурой, потому что штатный регулятор теряет такт по мере нагрева платы, а наш нет.

Обычный sysfs драйвера amdgpu (power_dpm_force_performance_level, pp_dpm_sclk) на BC-250 ничем не управляет — только skillfish-vf-governor. Видеоядро поднимается до потолка лишь при настоящей графической загрузке.

Разгон процессора и снижение напряжения

Процессор (8 ядер / 16 потоков Zen 2 «Oberon», два из них разблокированы SkillFishOS через SMU — можно и до загрузки, программой EFI, за одну перезагрузку) для разгона обслуживает одноразовая служба bc250-smu-oc.service, которая применяет значения из /etc/bc250-smu-oc.conf средствами проекта bc250_smu_oc. После применения она показывается как inactive — это нормально (служба одноразовая).

Что мы намерили, выжимая нашу плату:

  • 3700 МГц при напряжении около 1106 мВ (scale −16);
  • 3900 МГц при ~1199 мВ (scale −24);
  • 4,0 ГГц проверено при ~1224 мВ (scale −36) на 120 с непрерывной нагрузки с пиком 83 °C: пригодный максимум на этом экземпляре;
  • жёсткий потолок Vid: 1,325 В (никогда не превышался).

Снижение напряжения — это не про «выжать больше», а про то, чтобы делать ту же работу с меньшим нагревом и меньшим потреблением: на данной частоте напряжение опускают до порога устойчивости, температура падает, а тепловой запас остаётся остальной части APU.

Тепловая связь процессора и видеоядра

Процессор и видеоядро сидят на одном кристалле и делят один запас мощности. При смешанной нагрузке (требовательная игра: процессор и видеоядро вместе) APU защищает себя, и процессор сам опускается примерно до 3450 МГц, чтобы уложиться в запас и остаться ниже 85 °C. Это не изъян: чип отбрасывает наименее полезные мегагерцы. По той же причине снижение напряжения на процессоре оставляет больше тепловой «свободы» видеоядру, и наоборот.

40 вычислительных блоков — на ходу

У BC-250 40 CU (20 пар), но драйвер по умолчанию включает 24. SkillFishOS доводит их до 40 при загрузке, без лишних шагов; из Tuner число меняется вживую — вписываете нужное значение или щёлкаете по 20 парным квадратам. Первые 24 CU закреплены драйвером и включены всегда.

Со всеми 40 CU видеоядро выдаёт 11385 GFLOPS FP32 (vkpeak) на холодную против ~6141 на базовых 24 CU: +85 %. При долгой нагрузке (на горячую) держится около 10214 GFLOPS. Измеренная пропускная способность памяти (clpeak) — ~350–367 ГБ/с.

Кремниевая лотерея. На восстановленных чипах и «отбраковке» отдельные CU могут оказаться нестойкими. В Tuner есть «Проверка CU»: она нагружает каждую пару через vkpeak и отмечает сбои и зависания видеоядра, так что вы убедитесь, что ваш чип тянет все 40. (Механизм через umr, запись масок WGP — благодарность bc250-cu-live-manager, у нас независимая реализация.)

Защита от перегрева — потолок 85 °C

Тепловой предел — 85 °C, и держится он на двух уровнях:

  1. со стороны регулятора: gradi_max и watt_max в /etc/skillfish-vf-governor.json опускают потолок частоты до пересечения 85 °C или предела мощности (нашего, не заводского), и возвращают его, когда плата успокоилась;
  2. со стороны системы: skillfish-vf-watchdog, отдельный процесс, который берёт управление на себя, если регулятор падает с принудительно выставленным тактом.

Что нужно знать про штатное охлаждение (см. также Железо BC-250 — там корпуса для печати на 3D-принтере и советы по вентиляторам):

  • штатный радиатор на грани: сравнение тестов «подряд» искажает накопленное тепло — дайте плате остыть несколько минут между прогонами;
  • есть только краевой датчик видеоядра; датчика температуры видеопамяти нет;
  • пропускная способность памяти в порядке, но mclk не регулируется.

Живой пример: игры, упирающиеся в процессор

Некоторые игры — например, Black Myth: Wukong в самой игре — упираются в процессор и вызовы отрисовки: частота кадров почти не зависит ни от разрешения, ни от частоты видеоядра. Там помогают разгон процессора и хорошее охлаждение. Для повышения разрешения FSR 4 идёт через OptiScaler по пути DLSS игры (см. Игры).

Когда нагрузка действительно упирается в видеоядро (например, пролёт камеры в тесте Wukong), потолок кривой решает: в Tuner поднимите профиль с Cautious или Balanced на Performance (2100 МГц) либо впишите свою кривую. Измеренное преимущество на тесте Wukong против старого штатного регулятора — +4,5 % на холодной плате и +11 % на прогретой: регулятор V/F не теряет такт по мере нагрева, в отличие от штатного. Остаётся только жёсткий физический предел: 1129 мВ — потолок напряжения, который amdgpu заявляет для этого видеоядра; ни одна кривая не может его превысить.

И всё это без терминала

Частоты, кривая видеоядра, вентилятор и вычислительные блоки настраиваются из окна Tuner, с тремя готовыми профилями видеоядра и автоматической 25-секундной пробой с возвратом к прежней кривой, если ваша плата её не держит — см. Control Center. Это рекомендуемый путь: начните с Cautious, перейдите на Balanced или Performance — Tuner проверит всё на вашей BC-250.

Источники

  • skillfish-vf-governor — наш регулятор V/F для видеоядра, прямое управление через SMU с настраиваемым потолком
  • bc250_smu_oc (bc250-collective) — разгон и снижение напряжения процессора через SMU
  • bc250.info — безопасные точки и заметки о нагреве от сообщества
  • vkpeak · clpeak — тесты FP32 и пропускной способности памяти