Megjelent a Vortex projekt második kiadása, amely egy nyílt GPGPU-t fejleszt az RISC-V utasításkészlet architektúrájára építve, párhuzamos számítások végrehajtására az OpenCL API és a SIMT (Single Instruction, Multiple Threads) végrehajtási modell felhasználásával. A projekt a 3D grafika kutatásában és új GPU architektúrák fejlesztésében is felhasználható. A Verilog nyelven készült hardverblokkok leírásai, szimulátor, illesztőprogramok és egyéb projekt-dokumentáció az Apache 2.0 licenc alatt válik elérhetővé.
A GPGPU alapját a tipikus RISC-V ISA képezi, amelyet kiegészítő utasításokkal bővítettek, hogy támogassa a GPU funkcióit és a szálkezelést. A RISC-V utasításkészlet architektúrájában a változtatások minimalizálva lettek, és ahol lehetséges, a már meglévő vektoriális utasításokat használják. Hasonló megközelítést alkalmaz a RV64X projekt, amely szintén nyílt GPU-t fejleszt RISC-V technológiákra alapozva.

A Vortex technológiáján alapuló grafikai GPU Skybox nyílt fejlesztése zajlik, amely támogatja a Vulkan grafikai API-t. A Skybox prototípus, amely az Altera Stratix 10 FPGA-ra épült és 32 magot (512 szálat) tartalmaz, 230 MHz-es órajelen 3,7 gigapixelt másodpercenként (29,4 gigatranzakciót másodpercenként) tudott elérni. Érdemes megjegyezni, hogy ez az első olyan nyílt GPU, amely szoftveres és hardveres megvalósítással rendelkezik, és támogatja a Vulkant.
A Vortex főbb jellemzői:
- Támogatja a 32 és 64 bites RISC-V RV32IMF és RV64IMAFD utasításkészleteket.
- Szabályozható számú mag, feladatblokkok (warps) és szálak.
- Szabályozható ALU, FPU, LSU és SFU szám minden mag számára.
- Szabályozható pipeline végrehajtási szélesség.
- Opcionális megosztott memória és L1, L2 és L3 cache-ek.
- Támogatja az OpenCL 1.2 specifikációt.
- Lehetőség FPGA Altera Arria 10, Altera Stratix 10, Xilinx Alveo U50, U250, U280 és Xilinx Versal VCK5000 alapú megvalósításra.
- Kibővített utasítások: 'tex' a textúrák feldolgozásának felgyorsítására, vx_rast a raszterezés irányítására, vx_rop a fragmentek, mélység és átlátszóság feldolgozására, vx_imadd a ‘szorozni és hozzáadni’ művelet végrehajtására, vx_wspawn, vx_tmc és vx_bar az utasítások és szálak (wavefront, szálhalmaz, párhuzamosan végrehajtott SIMD Engine) frontjainak aktiválására, vx_split és vx_join.
- A SPIR-V shaderek köztes reprezentációjának támogatása OpenCL-be történő fordítással valósul meg.
- Alkalmazásfejlesztéshez eszközkészlet áll rendelkezésre, amely a Vortexhez illeszkedő PoCL (OpenCL fordító és runtime), LLVM/Clang, GCC és Binutils adaptált változatait tartalmazza.
- A chip működésének szimulálása Verilator (Verilog szimulátor), RTLSIM (RTL szimuláció) és SimX (szoftveres szimuláció) felhasználásával támogatott.
A Vortex 2.0 verzióban bevezetett változások között szerepel:
- Mikroarchitektúra optimalizálás történt.
- 64-bites RISC-V RV64IMAFD utasításkészlet architektúra támogatása.
- Xilinx FPGA alapú megvalósítás lehetősége.
- LLVM 16 és Ubuntu 20.04 támogatása.
- Refaktorálás történt, és javítások kerültek bevezetésre a minőségértékelés során felmerült hiányosságok kijavítása érdekében.
Forrás: opennet.ru
