È stata pubblicata la seconda edizione del progetto Vortex, che sviluppa un GPGPU open source basato sull'architettura del set di istruzioni RISC-V, progettato per l'esecuzione di calcoli paralleli utilizzando l'API OpenCL e il modello di esecuzione SIMT (Single Instruction, Multiple Threads). Il progetto può essere utilizzato anche per condurre ricerche nel campo della grafica 3D e per lo sviluppo di nuove architetture GPU. Schemi, descrizioni dei blocchi hardware in linguaggio Verilog, simulatori, driver e documentazione di progetto sono rilasciati sotto licenza Apache 2.0.
La base del GPGPU è costituita da un ISA RISC-V standard, espanso con alcune istruzioni aggiuntive necessarie per supportare le funzionalità della GPU e la gestione dei flussi. In questo modo, le modifiche all'architettura del set di istruzioni RISC-V sono ridotte al minimo e si cerca di utilizzare, quando possibile, le istruzioni vettoriali esistenti. Un approccio simile è impiegato nel progetto RV64X, che sviluppa anch'esso una GPU open source basata su tecnologie RISC-V.

Per la grafica, si sta sviluppando il GPU Skybox open source basato sulla tecnologia Vortex, che supporta l'API grafica Vulkan. Il prototipo Skybox, realizzato su FPGA Altera Stratix 10 e dotato di 32 core (512 thread), ha raggiunto una performance di riempimento di 3,7 gigapixel al secondo (29,4 gigatransazioni al secondo) a una frequenza di 230 MHz. Si segnala che questo è il primo GPU open source con implementazione sia software che hardware che supporta Vulkan.
Caratteristiche principali di Vortex:
- Supporto per architetture a 32 e 64 bit del set di istruzioni RISC-V RV32IMF e RV64IMAFD.
- Numero configurabile di core, blocchi di lavoro (warps) e thread.
- Numero configurabile di ALU, FPU, LSU e SFU per ogni core.
- Larghezza di emissione del pipeline configurabile.
- Memoria condivisa opzionale e cache di livelli L1, L2 e L3.
- Supporto per la specifica OpenCL 1.2.
- Possibilità di implementazione su FPGA Altera Arria 10, Altera Stratix 10, Xilinx Alveo U50, U250, U280 e Xilinx Versal VCK5000.
- Istruzioni avanzate: «tex» per accelerare l'elaborazione delle texture, vx_rast per il controllo della rasterizzazione, vx_rop per la gestione dei frammenti, delle profondità e della trasparenza, vx_imadd per eseguire l'operazione «moltiplica e somma», vx_wspawn, vx_tmc e vx_bar per attivare i fronti delle istruzioni e i thread in essi (wavefront, insieme di thread, eseguiti in parallelo dal SIMD Engine), vx_split e vx_join.
- Il supporto per la rappresentazione intermedia degli shader SPIR-V è realizzato tramite traduzione in OpenCL.
- Per lo sviluppo di applicazioni è disponibile un toolkit che include varianti PoCL adattate per lavorare con Vortex (compilatore e runtime OpenCL), LLVM/Clang, GCC e Binutils.
- È supportata la simulazione del funzionamento del chip utilizzando Verilator (simulatore Verilog), RTLSIM (simulazione RTL) e SimX (simulazione software).
Tra le modifiche nella versione Vortex 2.0:
- È stata ottimizzata la microarchitettura.
- È stato aggiunto il supporto per l'architettura a 64 bit del set di istruzioni RISC-V RV64IMAFD.
- È stata aggiunta la possibilità di implementazione su FPGA Xilinx.
- È stato aggiunto il supporto per LLVM 16 e Ubuntu 20.04.
- È stato effettuato un refactoring e sono state apportate correzioni ai problemi riscontrati durante la valutazione della qualità.
Fonte: opennet.ru
