Данил Скребенков, аспирант СПбГУ по направлению «Электроника и наноэлектроника» и наш инженер по разработке ПО, рассказал и показал, как стек OpenSBI и механизмы ядра Linux позволяют существенно снизить энергопотребление многоядерных RISC‑V‑кластеров без потери функциональности.
Этот доклад продолжил серию выступлений CloudBEAR в рамках мероприятий RISC‑V в России и за рубежом, где компания регулярно делится опытом по производительности и энергоэффективности своих IP‑ядер. Акцент выступления был сделан на прикладной стороне power management: от архитектуры процессорного кластера BI до интеграции с подсистемами Linux.
Данил подробно разобрал процессорный комплекс с точки зрения управления энергопотреблением для ядер, кеша и контроллера когерентности при помощи блока Power Management Unit. Был показан порядок подготовки к переходу в low‑power‑режимы: настройка регистров PMU, перевод блоков памяти в экономичный режим, отключение тактового сигнала и очистка кеша перед полным выключением.
Отдельный блок доклада был посвящен использованию расширений SBI HSM и SUSP в составе OpenSBI для реализации cpuidle, cpu_hotplug и suspend‑to‑RAM. Спикер продемонстрировал, как через стандартные ecall‑вызовы Linux управляет остановкой и запуском ядер (hart stop/start) и системным сном, а платформа CloudBEAR реализует платформо‑специфичную логику энергосбережения.
В Linux‑подсистеме cpuidle для ядер CloudBEAR были заданы два состояния: «сон» с переводом памяти в low‑power‑режим и отключением тактового сигнала, и «глубокий сон» с дополнительным cache flush и отключением питания памяти. На синтетических однопоточных нагрузках показано, что в 4‑ядерных конфигурациях суммарная доля времени, проведённого ядрами в idle‑состояниях, достигает 270–300% относительно общего времени работы системы, что демонстрирует высокую эффективность энергосберегающих механизмов при многопоточном простое.
При реализации cpu_hotplug команда столкнулась с проблемой rfence ecall в связке OpenSBI 1.7 и Linux, которая проявлялась при «горячем» отключении ядра. Решением стал патч в ядро Linux, очищающий маску задач при hot‑unplug, что позволило стабильно управлять включением и выключением ядер на лету.
В завершение выступления Данил отметил, что cpufreq и управление напряжением пока не используются из‑за отсутствия целевого SoC с PLL и полноценной поддержкой динамического изменения питания, но CloudBEAR готова реализовать эти механизмы совместно с заказчиками. Также был затронут внутренний RPMI‑подход, где управление энергопотреблением выносится на отдельный контроллер платформы, что снижает требования к программной части за счёт более «умной» аппаратной поддержки задержек и операций с кешем.
Таким образом, наш доклад зафиксировал важный для российского сообщества шаг: появление в отечественной экосистеме RISC-V готового, интегрированного стека управления энергопотреблением для Linux‑платформ.