A seconda edizione di u prughjettu Vortex hè stata publicata, sviluppendu una GPGPU aperta basata nantu à l'architettura di l'istruzzioni RISC-V, pensata per eseguisce l'informatica parallela utilizendu l'API OpenCL è u mudellu d'esekzione SIMT (Single Instruction, Multiple Threads). U prughjettu pò ancu esse usatu per fà ricerche in u campu di gràfiche 3D è sviluppà novi architetture GPU. Schemi, descrizioni di blocchi hardware in lingua Verilog, simulatore, drivers è documentazione di cuncepimentu accumpagnatu sò distribuiti sottu a licenza Apache 2.0.
U core di GPGPU hè un RISC-V ISA genericu, allargatu cù alcune struzzioni supplementari necessarii per sustene a funziunalità GPU è u cuntrollu di filu. À u listessu tempu, i cambiamenti in l'architettura di l'istruzzioni RISC-V sò mantinuti à u minimu è, sempre chì hè pussibule, i struzzioni vettoriali esistenti sò usati. Un approcciu simili hè utilizatu in u prughjettu RV64X, chì sviluppa ancu una GPU aperta basata in tecnulugia RISC-V.

Per i grafici basati nantu à e tecnulugia Vortex, a GPU Skybox aperta hè sviluppata, chì sustene l'API grafica Vulkan. U prototipu Skybox, creatu nantu à a basa di l'Altera Stratix 10 FPGA è chì includenu core 32 (512 fili), hà permessu di ottene un rendimentu di riempimentu di 230 gigapixels per seconda (3.7 gigatransactions per second) à una frequenza di 29.4 MHz. Hè nutatu chì questu hè a prima GPU aperta cù implementazione di software è hardware chì sustene Vulkan.
Caratteristiche principali di Vortex:
- Supporta l'architetture di set di istruzioni RISC-V a 32 e 64 bit RV32IMF e RV64IMAFD.
- Numero configurabile di core, blocchi di task (warps) è fili.
- Numero configurabile di ALU, FPU, LSU è SFU per core.
- Larghezza di emissione di pipeline regulabile.
- Memoria spartuta opzionale è cache L1, L2 è L3.
- Supportu di specificazione OpenCL 1.2.
- Possibilità di implementazione basata su FPGA Altera Arria 10, Altera Stratix 10, Xilinx Alveo U50, U250, U280 e Xilinx Versal VCK5000.
- Istruzioni avanzate: "tex" per accelerà a trasfurmazioni di texture, vx_rast per cuntrullà a rasterizazione, vx_rop per trattà i frammenti, a prufundità è a trasparenza, vx_imadd per fà multiplicà è aghjunghje operazioni, vx_wspawn, vx_tmc è vx_bar per attivà i bordi d'istruzzioni è i fronti d'onda, un set di fili eseguitu in parallelu da u SIMD Engine), vx_split è vx_join.
- U supportu per a rapprisintazioni intermedia di i shaders SPIR-V hè implementatu via traduzzione à OpenCL.
- Per u sviluppu di l'applicazioni, un toolkit hè offertu, cumprese varianti di PoCL (compiler è runtime OpenCL), LLVM / Clang, GCC è Binutils adattati per travaglià cù Vortex.
- A simulazione di chip hè supportata cù Verilator (simulatore Verilog), RTLSIM (simulazione RTL) è SimX (simulazione software).
Trà i cambiamenti in Vortex 2.0:
- A microarchitettura hè stata ottimizzata.
- Aggiuntu supportu per l'architettura di set di istruzioni RISC-V RV64IMAFD a 64 bit.
- Aggiunta a pussibilità di implementazione basatu annantu à Xilinx FPGA.
- Добавлена поддержка LLVM 16 и Ubuntu 20.04.
- A refactoring hè stata realizata è i difetti identificati durante a valutazione di a qualità sò stati corretti.
Source: opennet.ru
