Ускорьте приложения с адаптированными пользовательскими инструкциями RISC-V
Открытая архитектура набора инструкций (ISA) RISC-V предлагает беспрецедентную гибкость, позволяя разработчикам проектировать расширения, точно подходящие под требования их приложений. Хотя базовый процессор можно сконфигурировать со стандартными расширениями, настоящее преимущество лежит в создании новых инструкций, решающих конкретные проблемы производительности или энергопотребления.
Программный вызов фиксированных ISA
Исторически ISA были проприетарной интеллектуальной собственностью коммерческих вендоров. Встроенным разработчикам приходилось тестировать множество фиксированных ISA для поиска лучшего соответствия их нагрузкам, но неспособность изменить семантику инструкций означала, что критические оптимизации — такие как выделенная инструкция шифрования — были невозможны. Это ограничение часто заставляло проектировщиков полагаться только на масштабирование процесса или интеграцию периферии для достижения дифференциации, что может быть затратным и ограниченным по времени.
ISA RISC-V возник в UC Berkeley и теперь управляется RISC-V International Association, некоммерческой организацией с более чем 300 участниками. Её свободная, открытая лицензия дает разработчикам чистый лист: стандартное ядро, которое можно расширить, или совершенно новый дизайн, построенный с нуля.
Открытые ISA привлекают академию, стартапы и крупные предприятия. Их можно использовать в FPGA, SoC или как ядро микроконтроллера, и они поддерживают ряд бизнес-моделей — от коммерческой IP до открытого исходного кода и кастомного кремния.
Использование гибкости RISC-V
Начало работы просто. Типичной точкой входа является 32-битная конфигурация RV32IM, включающая целочисленное расширение «I» и расширение умножения «M». Инструменты симуляции позволяют инстанцировать базовый ISA, прикрепить модель памяти с реалистичными задержками и запускать C/C++ код на виртуальном процессоре.
Используя IDE вроде Eclipse и отладчик GNU (GDB), разработчики могут профилировать приложения, выявлять горячие точки и моделировать кандидатов в пользовательские инструкции. Полученная RTL-спецификация и оценки производительности затем возвращаются в цикл разработки.

Рассмотрим шифрование ChaCha20 — распространенный бенчмарк для низкоэнергетических устройств. После компиляции обычного RV32IM бинарника и запуска профилировщика базовых блоков, большая часть времени выполнения концентрируется в операциях XOR и вращения «quarter-round» (см. Рисунок 2).

Инструменты визуализации создают сворачиваемое дерево статистики выполнения, облегчая выявление доминирующих функций — таких как processWord() — и их подвызовов (Рисунок 3).

Когда узкое место производительности ясно, следующий шаг — спроектировать пользовательские инструкции, консолидирующие паттерн XOR-плюс-вращение в одну микрооперацию. Поскольку RISC-V — архитектура load-store, эти инструкции должны оперировать 32-битными регистрами, делая их подходящими для пространства опкода custom-1.

С правилами кодирования ISA, младшие семь бит идентифицируют опкод, а три бита funct3 дают место для восьми различных операций. Четыре из них — XOR плюс 7-битный, 8-битный, 12-битный или 16-битный левый вращение — достаточно для ChaCha20.
Перед коммитом в железо разработчики моделируют эти инструкции в среде ISS с использованием OVP VMI API. Этот быстрый шаг симуляции проверяет функциональную корректность и дает первое представление о приросте производительности.
Существует два подхода к функциональной валидации:
- Вызвать оригинальную C/C++ рутину и привязать новые инструкции через встроенный ассемблер (Рисунок 5a).
- Реализовать инструкции как VMI morph ops, воспроизводящие то же поведение (Рисунок 5b).


После перекомпиляции приложения с встроенным ассемблером симулятор сообщает о драматическом сокращении количества инструкций и циклического времени:
Результаты с оригинальной C реализацией
Info Simulated instructions: 316,709,013
Info Simulated time: 5.15 seconds

Результаты с пользовательскими инструкциями
Info Simulated instructions: 60,474,426
Info Simulated time: 1.38 seconds
С новыми инструкциями функция processWord() все еще потребляет основную часть времени выполнения (≈66%), но общий алгоритм теперь в три раза быстрее.
Дальнейшая доработка включает назначение реалистичных циклических задержек каждой пользовательской инструкции и повторное профилирование, включая состояния ожидания памяти, которые появились бы в кремниевой реализации.
Поскольку ISS бесшовно интегрируется с Eclipse и GDB, полная отладка как хост-приложения, так и пользовательского ISA может быть выполнена до коммита в железо.

От симуляции к RTL-реализации
С проверенными метриками производительности в руках разработчики переводят пользовательские инструкции в RTL. Ранее сгенерированная функциональная модель и план верификации служат золотым стандартом эталоном, снижая риск при синтезе и замыкании по таймингам.
Документация следует тому же рабочему процессу: быстрые процессорные модели OVP включают шаблонизированную документацию, которую можно расширить для описания новых инструкций. После форматирования в TeX генерируется PDF для ссылки сообществом (Рисунок 8).

Заключение
Открытая ISA RISC-V открывает мир пользовательских расширений, которые могут драматически улучшить производительность приложений, снизить энергопотребление и удовлетворить строгие реально-временные дедлайны — возможности, недоступные фиксированным ISA. Профилируя реальные нагрузки, моделируя пользовательские инструкции в симуляции и строго верифицируя RTL, разработчики могут уверенно выводить на рынок адаптированный кремний с доказанными приростами.
Встроенный
- Профилирование распределенных приложений с Linux perf: практическое руководство
- Струйная печать связующего (Binder Jetting) 3D-печать: как работает, преимущества и лучшие практики
- Microchip запускает Arm-базированные MCU для масштабируемых космических миссий — от COTS до радиационно-терпимых и зак…
- Renesas запускает RX72M MCU с встроенным EtherCAT для промышленной автоматизации
- Axiomtek tBOX400-510-FL: Транспортный ПК с двумя процессорами и интегрированным 10-портовым управляемым PoE коммутатором
- Мастерство переговоров о стоимости с существующими поставщиками — практическое руководство
- ЧПУ-деревообрабатывающий фрезер: универсальная точность для качественной мебели и не только
- ИИ в страховании: практическое руководство для реального внедрения
- ИИ в медицине: 5 проверенных реальных применений с практическими примерами
- Кастомные тормозные колодки и накладки: обеспечение безопасности на высокоскоростных ж/д