Un gruppo di ricercatori del Georgia Institute of Technology sta sviluppando il progetto di ricerca Vortex, che offre un GPGPU open source basato sull'architettura del set di istruzioni RISC-V, mirato all’esecuzione di calcoli paralleli utilizzando l'API OpenCL e il modello di esecuzione SIMT (Single Instruction, Multiple Threads), oltre a condurre ricerche nel campo della grafica 3D e dello sviluppo di nuove architetture GPU. Attualmente, il progetto è in fase prototipale e funziona tramite FPGA. Gli schemi, le descrizioni dei blocchi hardware in Verilog, il simulatore, i driver e la documentazione di progetto associata sono distribuiti sotto licenza BSD.
Nella sua forma attuale, viene fornito un ISA standard RISC-V, ampliato con alcune istruzioni aggiuntive necessarie per supportare le funzioni GPU e la gestione dei thread. Durante lo sviluppo, gli autori del progetto hanno cercato di ridurre al minimo le modifiche all'architettura del set di istruzioni RISC-V, utilizzando, dove possibile, istruzioni vettoriali già esistenti. Un approccio simile viene utilizzato anche nel progetto RV64X, che sviluppa anch'esso una GPU open source basata sulle tecnologie RISC-V.

Le capacità di elaborazione grafica di Vortex sono attualmente limitate. È stata annunciata la supporto per OpenGL ES basato su Vortex, ma nel GPU è attualmente implementata solo l'istruzione «tex» per accelerare l'elaborazione delle texture, che viene eseguita a livello di shader di frammento. Il rasterizzatore integrato è assente: tutte le operazioni geometriche vengono eseguite dal CPU di sistema, mentre i primitivi di base per punti, linee e triangoli, così come l'elaborazione dei frammenti, della profondità e della trasparenza, sono realizzati utilizzando il kernel OpenCL.

In futuro si prevede di implementare estensioni ISA specifiche per l'elaborazione grafica, aggiungere supporto per le API CUDA e Vulkan, oltre a estensioni per l'accelerazione dei sistemi di apprendimento automatico e analisi dati. Per lo sviluppo di applicazioni è disponibile un toolkit, che include varianti di 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) e SimX (simulazione software).

Caratteristiche principali di Vortex:
- Supporto per l'architettura del set di istruzioni RISC-V RV32IMF.
- Scalabilità del chip fino a 64 core con cache L2 e L3 opzionali.
- Ogni core può eseguire 1024 thread e funzionare a una frequenza di 250 MHz.
- La massima capacità computazionale è stimata in 128 Gflop, con una larghezza di banda della memoria di 16 GB/s. L'implementazione a 32 core, operante a 200 MHz, basata su FPGA Altera Stratix 10, ha mostrato prestazioni di 25,6 GFlop.
- Supporto per lo standard OpenCL 1.2.
- Possibilità di implementazione basata su FPGA Intel Arria 10 e Intel Stratix 10.
Fonte: opennet.ru
