Публикувана втората редакция на проекта Vortex, който развива отворен GPGPU на базата на архитектурата на командния набор RISC-V, предназначен за изпълнение на паралелни изчисления с използване на API OpenCL и модела на изпълнение SIMT (Single Instruction, Multiple Threads). Проектът също така може да се използва за провеждане на изследвания в областта на 3D графиката и разработването на нови GPU архитектури. Схеми, описания на хардуерни блокове на Verilog, симулатор, драйвери и съпътстващата проектна документация се разпространяват под лицензия Apache 2.0.
Основата на GPGPU е типовата ISA RISC-V, разширена с някои допълнителни инструкции, необходими за поддръжка на функции на GPU и управление на потоците. Промените в архитектурата на командния набор RISC-V са сведени до минимум и, когато е възможно, се използват вече съществуващите векторни инструкции. Подобен подход се прилага в проекта RV64X, който също развива отворен GPU на базата на технологии RISC-V.

За графични технологии Vortex се развива отворен GPU Skybox, който поддържа графичния API Vulkan. Прототипът Skybox, създаден на базата на FPGA Altera Stratix 10 и включващ 32 ядра (512 потока), е постигнал производителност при честота 230 MHz от 3.7 гигапиксела в секунда (29.4 гигатранзакции в секунда). Забелязва се, че това е първият отворен GPU с софтуерна и хардуерна реализация, който поддържа Vulkan.
Основни характеристики на Vortex:
- Поддръжка на 32- и 64-битови архитектури на командния набор RISC-V RV32IMF и RV64IMAFD.
- Настраиваем брой ядра, блокове задачи (warps) и потоци.
- Настраиваем брой ALU, FPU, LSU и SFU за всяко ядро.
- Настрачваема ширина на издаване на конвейера (pipeline issue width).
- Опционална споделена памет и кешове на нива L1, L2 и L3.
- Поддръжка на спецификация OpenCL 1.2.
- Възможност за реализация на база FPGA Altera Arria 10, Altera Stratix 10, Xilinx Alveo U50, U250, U280 и Xilinx Versal VCK5000.
- Разширени инструкции: 'tex' за ускорение на обработката на текстури, vx_rast за управление на растеризацията, vx_rop за обработка на фрагменти, дълбочини и прозрачност, vx_imadd за извършване на операция 'умножение и събиране', vx_wspawn, vx_tmc и vx_bar за активиране на фронтовете на инструкциите и потоките в тях (wavefront, набор от нишки, изпълнявани паралелно от SIMD Engine), vx_split и vx_join.
- Поддръжката на междинно представяне на шейдери SPIR-V е реализирана чрез транслация в OpenCL.
- За разработка на приложения се предлага инструментариум, включващ адаптирани за работа с Vortex варианти PoCL (компилатор и runtime OpenCL), LLVM/Clang, GCC и Binutils.
- Поддържа се симулиране на работата на чипа с използване на Verilator (симулатор на Verilog), RTLSIM (симулация на RTL) и SimX (програмна симулация).
Сред промените в версия Vortex 2.0:
- Извършена е оптимизация на микроархитектурата.
- Добавена е поддръжка за 64-битова архитектура на комплект от команди RISC-V RV64IMAFD.
- Добавена е възможност за реализиране на базата на FPGA Xilinx.
- Добавена е поддръжка за LLVM 16 и Ubuntu 20.04.
- Извършен е рефакторинг и са направени корекции на недостатъци, установени при оценка на качеството.
Източник: opennet.ru
