Un gruppo di ricercatori del Georgia Institute of Technology sta sviluppando il progetto di ricerca Vortex, che propone un GPGPU aperto 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 nello sviluppo di nuove architetture GPU. Il progetto è attualmente in fase prototipale, funzionante tramite FPGA. Gli schemi, le descrizioni dei blocchi hardware in linguaggio Verilog, il simulatore, i driver e la documentazione di progetto pertinente sono distribuiti con licenza BSD.
Nella sua forma attuale, viene fornita un'ISA standard RISC-V, ampliata con alcune istruzioni aggiuntive necessarie per supportare le funzionalità della GPU e la gestione dei thread. Nello sviluppo, gli autori del progetto hanno cercato di ridurre al minimo le modifiche all'architettura del set di istruzioni RISC-V, utilizzando se possibile le istruzioni vettoriali già esistenti. Un approccio simile è applicato anche nel progetto RV64X, che sviluppa anch'esso una GPU aperta basata sulle tecnologie RISC-V.

Le capacità grafiche di Vortex sono ancora limitate. È stata dichiarata l’implementazione del supporto per OpenGL ES basato su Vortex, ma nel GPU è stata implementata solo l'istruzione «tex» per accelerare l'elaborazione delle texture, che viene eseguita a livello dello shader di frammento. Non è presente un rasterizzatore integrato: tutte le operazioni geometriche vengono eseguite dalla CPU del 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 un core OpenCL.

In futuro si prevede di implementare estensioni ISA specifiche per l'elaborazione grafica, aggiungere supporto per le API CUDA e Vulkan, nonché estensioni per accelerare i sistemi di machine learning e analisi dei dati. Per lo sviluppo delle applicazioni è disponibile un toolkit che include versioni adattate per lavorare con Vortex di PoCL (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 operare a una frequenza di 250 MHz.
- La potenza di calcolo massima è stimata in 128 Gflops, con una larghezza di banda di memoria di 16 GB/s. La realizzazione a 32 core, funzionante a una frequenza di 200 Mhz, basata su FPGA Altera Stratix 10 ha mostrato prestazioni di 25.6 GFlops.
- Supporto per lo standard OpenCL 1.2.
- Possibilità di implementazione su FPGA Intel Arria 10 e Intel Stratix 10.
Fonte: opennet.ru
