Proiectul Vortex 3.0, care dezvoltă o unitate de procesare grafică (GPGPU) open-source bazată pe arhitectura setului de instrucțiuni RISC-V și este concepută pentru calcul paralel folosind API-ul OpenCL și modelul de execuție SIMT (Single Instruction, Multiple Threads), este acum disponibil. Proiectul poate fi utilizat și pentru cercetarea graficii 3D și dezvoltarea de noi arhitecturi GPU. Schemele, descrierile blocurilor hardware din Verilog, simulatorul, driverele și documentația de proiectare însoțitoare sunt distribuite sub licența Apache 2.0.
GPGPU se bazează pe standardul RISC-V ISA, extins cu instrucțiuni suplimentare pentru a suporta caracteristicile GPU și gestionarea firelor de execuție. Modificările aduse arhitecturii setului de instrucțiuni RISC-V sunt menținute la minimum, iar instrucțiunile vectoriale existente sunt utilizate ori de câte ori este posibil. Instrucțiunile suplimentare includ: „tex” pentru accelerarea procesării texturilor; vx_rast pentru controlul rasterizării; vx_rop pentru procesarea fragmentelor, adâncimii și transparenței; vx_imadd pentru operații de înmulțire și adunare; vx_wspawn, vx_split, vx_join, vx_tmc și vx_bar pentru activarea grupurilor de fire de execuție (fronturi de undă) executate în paralel de către motorul SIMD.

GPGPU-ul dezvoltat suportă arhitecturi de seturi de instrucțiuni RISC-V RV32IMF și RV64IMAFD pe 32 și 64 de biți și poate include memorie partajată opțională, cache-uri L1, L2 și L3 și un număr configurabil de nuclee, warp-uri și fire de execuție. Fiecare nucleu poate include, de asemenea, un număr configurabil de ALU-uri, FPU-uri, LSU-uri și SFU-uri. FPGA-urile Xilinx și Altera pot fi utilizate pentru prototipare, iar Verilator (simulator Verilog), RTLSIM (simulare RTL) și SimX (simulare software) pot fi utilizate pentru simularea cipurilor.
Pentru dezvoltarea aplicațiilor, este oferit un set de instrumente, care include versiuni adaptate Vortex ale PoCL (compilator și runtime OpenCL), LLVM/Clang, GCC și Binutils. Proiectul acceptă specificația OpenCL 1.2 și implementează suport pentru reprezentarea intermediară SPIR-V a shaderelor prin traducere în OpenCL.
Modificările din Vortex 3.0 includ:
- A fost adăugată o stivă grafică hardware, inclusiv blocuri pentru rasterizare, mapare a texturilor și îmbinare a ieșirilor (OM). Un driver Vulkan, vortexpipe, a fost dezvoltat pentru Mesa, bazat pe stiva grafică implementată și pe rasterizatorul software lavapipe.
- Capacitățile Tensor Core, concepute pentru a accelera execuția modelelor de învățare automată, au fost extinse, implementând suport pentru sparsitate structurată pentru comprimarea matricilor de ponderi.
- Operația WGMMA (multiplicarea matricei la nivel de warpgroup) a fost implementată pentru multiplicarea matricei în mod asincron.
- Adăugat motorul DXA (Data Transfer Acceleration) pentru a accelera transferul de date din memoria globală în cea locală.
- A fost implementată o nouă arhitectură bazată pe un procesor de comandă (CP) și un planificator hardware al nucleelor de calcul (KMU - Kernel Management Unit), care permite dispecerizarea thread-urilor de calcul către partea cipului.
- Se propune o nouă bibliotecă de execuție care funcționează în mod non-blocant și oferă abstracțiuni ce se traduc în comenzi hardware executate asincron. Sunt suportate cozi, evenimente, module și sincronizare bazate pe bariere asincrone cu semantică arrive/wait/event.
- S-a adăugat suport pentru instrucțiunile scurtate RISC-V (RVC).
- A fost implementat suport hardware pentru operațiuni atomice (Hardware Atomics).
- FPU a fost complet reproiectat și au fost introduse noi blocuri multiplicatoare (Wallace-tree, Folded-radix) și sumatoare (Kogge-Stone).
- A fost adăugată o stivă de memorie virtuală bazată pe unitatea de gestionare a memoriei (MMU) cu suport pentru arhitectura de adresare virtuală SV32 pe 32 de biți.
- Suport pentru extensia RISC-V Zicond cu implementarea operațiilor condiționale.
- Gatering integrat cu ceas.
- Suportul pentru limbajul HIP (Heterogeneous Interface for Portability) a fost implementat prin intermediul framework-ului chipStar, care traduce HIP în SPIR-V.
- A fost asigurată integrarea completă cu simulatorul GEM5 și a fost adăugat suport pentru simulatorul SimX pe arhitectura TLM (Transaction-Level Modeling).
- S-a adăugat suport pentru seturile de instrumente Synopsys și Yosys pentru sinteza logică în fabricarea de cipuri, precum și suport pentru utilizarea bibliotecilor de elemente standard ASAP7 (7nm), SAED14 (14nm) și NanGate (15nm).
- Lanțul de instrumente de referință a fost actualizat la LLVM 20 și POCL 7.0.
Sursa: opennet.ru
