TGViewer
Записки CPU designer'a Записки CPU designer'a @cpu_design · 3.57K subscribers
Post #302 3.4K
Сегодня принес вам интересное руководство по оптимизации работы с software - RISC-V Optimization Guide.

RISC-V Optimization Guide — это руководство, созданное проектом RISE Project для предоставления разработчикам программного обеспечения конкретных рекомендаций по оптимизации кода для процессоров на архитектуре RISC-V. ​

Содержимое гайда:
1) Общие рекомендации: использование регистров, работа с памятью и кешами.

2) Особенности расширений RISC-V: RVV (векторные инструкции), RVF, RVD и другие расширения.

3) Советы по LMUL: как выбирать LMUL в зависимости от типа ядра (In-Order vs Out-of-Order).

4) Переносимость: советы по созданию переносимого и масштабируемого кода.

Гайд будет особенно полезен в контексте последней темы, поднятой Krste Asanovic, о ключевой идее LMUL в векторной спецификации RISC-V. Основная мысль Krste заключается в необходимости аппаратной поддержки механизма определения оптимального LMUL в зависимости от фактической длины вектора (vl).
The intention in the RVV ISA design was that execution occupancy would be proportional to active vl as required by the application, not VLMAX set by LMUL.
So, even if LMUL was large, but vl was small, the occupancy of the vector instruction should be low. In other words,
larger LMUL should not cause worse performance with the same vl.
Это
позволит избежать ситуации, когда векторные инструкции выполняются над несуществующими (неиспользуемыми) элементами, повышая общую эффективность и производительность.

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

Например, в руководстве (RISE Optimization Guide) явно указано следующее:
If all operations involved are linear in LMUL, choose EMUL to balance register pressure and frontend bandwidth. Depending on the processor implementation, this is going to mean either very high LMUL or very low LMUL, but not both. For example, on Out-of-Order machines, it’s generally better to have very low LMUL, resulting in lower register pressure at the expense of more instructions being issued. While on In-Order machines, it’s generally better to have very high LMUL, favoring lower instruction count at the expense of higher register pressure.

В данный момент в сообществе существует условно два подхода к использованию LMUL:

Авторы спецификации RVV (например, Krste Asanovic) ориентированы на долгосрочную перспективу, в которой наибольшая эффективность достигается за счёт модели исполнения инструкций, зависящей от реальной длины вектора (vl-dependent). Такой подход позволяет эффективно использовать высокий LMUL там, где это оправдано.
Однако наиболее просто и естественно эта модель реализуется в широких in-order VPU с большой длиной вектора (большим VLEN), в то время как для коротких OoO-векторных ядер с небольшим VLEN (128–512 бит) реализация такой логики существенно более сложна и менее практична.

Практические реализации и существующие рекомендации (например, RISE Optimization Guide) делают акцент на текущих технических ограничениях и сложности реализации LMUL в высокопроизводительных процессорах с внеочередным выполнением инструкций (Out-of-Order). В таких реализациях предпочтительным считается использование низкого LMUL (LMUL=1).

Таким образом, сейчас между долгосрочной стратегией стандарта и практическими реализациями имеется явное расхождение. Можно ожидать постепенного сближения этих подходов, если высокопроизводительные OoO-ядра смогут преодолеть аппаратные сложности реализации и приблизиться к модели, заложенной в стандарт RVV.
  • ✍ 10
  • 👍 3
  • 🔥 1
More from @cpu_design
  1. Sep 29, 2026Нидерланды продолжают укреплять свои позиции как один из ключевых полупроводниковых хабов…
  2. Sep 28, 2026Плюс-минус такие же вайбы, когда в Codex после релиза Astra прилетело три бесплатных reset…
  3. Sep 27, 2026RTL/Verif/PhysDesign-инженеры, теперь наша пора радоваться (либо трястись, что нас всех ск…
  4. Sep 14, 2026How OpenAI Used Its Own LLMs to Design Its Jalapeño Chip https://spectrum.ieee.org/llms-fo…
  5. Sep 14, 2026Люблю технологии ASUS driver - https://github.com/torvalds/linux/blob/master/drivers/hid/h…
  6. Sep 13, 2026Вышел новый формат от Истового Инженера - «Разгоны», где инженеры разных специальностей об…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →