RISC-V — це архітектура, яка набула великої популярності В останні роки це сталося завдяки його дизайну з відкритим вихідним кодом (ISA), а також тому, що він став однією з найважливіших процесорних архітектур завдяки своїй гнучкості та модульності.
Завдяки цьому Було запущено різні проекти на основі RISC-V і одним із них є Vortex, про який ми сьогодні поговоримо тут, у блозі.
Що таке проект Vortex?
Вихровий es проект, який розробляє GPGPU, на основі архітектури RISC-V. Проект розроблений для виконання паралельних обчислень за допомогою API OpenCL і моделі виконання SIMT.
Ядром Vortex GPGPU є універсальний RISC-V, на якому впроваджено вдосконалення з деякими додатковими інструкціями необхідні для підтримки функціональності графічного процесора та керування потоками. У той же час зміни в архітектурі набору інструкцій RISC-V зведені до мінімуму, а наявні векторні інструкції використовуються, коли це можливо. Подібний підхід використовується в проекті RV64X, який також розробляє відкритий GPU на основі технологій RISC-V.
Ще одна особливість Vortex - це GPGPU має розширені інструкції, серед яких: »tex» для прискорення обробки текстур, «vx_rast» для керування растеризацією, «vx_rop» для обробки фрагментів, глибини та прозорості, «vx_imadd» для виконання операцій множення та додавання, «vx_wspawn» , «vx_tmc» та «vx_bar» для активації країв інструкцій і хвильових фронтів (набір потоків, що виконуються паралельно механізмом SIMD), «vx_split» і «vx_join».
з cОсновні особливості Vortex, які виділяються знайдено наступне:
- Підтримка 32- і 64-розрядних архітектур наборів інструкцій RISC-V: RV32IMF і RV64IMAFD.
- Конфігурація: настроювана кількість ядер, блоків завдань (деформації) і потоків.
- Процесор: налаштовувана кількість ALU, FPU, LSU і SFU на ядро.
- Ширина виходу: регульована ширина виходу труби.
- Пам'ять: додаткова спільна пам'ять і кеші L1, L2 і L3.
- Підтримка специфікації OpenCL 1.2.
- Реалізація на основі FPGA: Можливість реалізації на FPGA Altera Arria 10, Altera Stratix 10, Xilinx Alveo U50, U250, U280 і Xilinx Versal VCK5000.
- Підтримка SPIR-V: реалізовано через переклад на OpenCL.
Інструменти розробки: набір інструментів, що включає варіанти PoCL (компілятор OpenCL і середовище виконання), LLVM/Clang, GCC і Binutils, адаптовані для роботи з Vortex. - Моделювання мікросхеми: підтримується за допомогою Verilator (симулятор Verilog), RTLSIM (симуляція RTL) і SimX (моделювання програмного забезпечення).
Графічний процесор Skybox
Крім того, для графіки на основі технологій Vortex розробляється графічний процесор Skybox open, який підтримує графічний API Vulkan. Зазначається, що прототип Skybox створений на базі FPGA Altera Stratix 10 і включає 32 ядра (512 потоків) на частоті 230 МГц. Слід зазначити, що це перший відкритий GPU з сумісною програмно-апаратною реалізацією з Вулканом
Варто зазначити це Зараз проект Vortex знаходиться у версії 2.1, який нещодавно було випущено та впроваджено важливі зміни, такі як: підтримка об’єднання пам’яті (тепер підтримується), оптимізовано обробку інструкцій CSR, оптимізовано перевантаження, новий сценарій конфігурації збірки, серед іншого:
- Додано API ядраpawn_taskgroups для запуску ядер, які використовують локальну пам'ять і бар'єри
- Нове розширення середовища виконання для переміщуваних аргументів ядра та двійкових файлів.
- Нові доповнення API пам'яті виконання: vx_mem_reserve, vx_mem_access, vx_mem_address
- новий API середовища виконання vx_check_occupancy
- Додано опцію драйвера графічного процесора, щоб спробувати тести OpenCL на локальному графічному процесорі (наприклад, blackbox.sh –driver=gpu –app=sgemm)
- Додано тести OpenCL, які використовуються з локальною пам'яттю (psum, sgemm2, sgemm3)
- Додано спеціальні бібліотеки vortex libc і librt з інструментарієм дивергенції керування.
Якщо вам цікаво дізнатися більше про це, ви повинні знати, що схеми, описи апаратних блоків мовою Verilog, симулятор, драйвери та супровідна проектна документація поширюються за ліцензією Apache 2.0. Подробиці можна перевірити в наступне посилання.