Den anden udgave af Vortex-projektet er blevet offentliggjort, som udvikler en åben GPGPU baseret på RISC-V instruktionssættet. Den er designet til at udføre parallelle beregninger ved hjælp af OpenCL API'et og SIMT (Single Instruction, Multiple Threads) udførelsesmodellen. Projektet kan også bruges til forskning inden for 3D-grafik og udvikling af nye GPU-arkitekturer. Diagrammer, beskrivelser af hardwareblokke i Verilog, simulator, drivere og ledsagende projekt dokumentation distribueres under Apache 2.0 licensen.
GPGPU'en er baseret på en standard RISC-V ISA, udvidet med nogle ekstra instruktioner, der er nødvendige for at understøtte GPU-funktioner og trådadministration. Ændringer i RISC-V instruktionssættet er minimaliseret, og eksisterende vektorinstruktioner anvendes så vidt muligt. En lignende tilgang anvendes i projektet RV64X, som også udvikler en åben GPU baseret på RISC-V teknologier.

Til grafik er Vortex ved at udvikle en åben GPU kaldet Skybox, som understøtter Vulkan grafik API'et. Prototypen Skybox, bygget på Altera Stratix 10 FPGA og omfatter 32 kerner (512 tråde), har opnået en fyldehastighed på 3,7 gigapixler per sekund (29,4 gigatransaktioner per sekund) ved en klokfrekvens på 230 MHz. Det bemærkes, at dette er den første åbne GPU med både software- og hardwareimplementering, der understøtter Vulkan.
Hovedfunktioner i Vortex:
- Understøttelse af 32- og 64-bit RISC-V instruktionssæt arkitekturer RV32IMF og RV64IMAFD.
- Konfigurerbart antal kerner, opgaveblokke (warps) og tråde.
- Konfigurerbart antal ALU, FPU, LSU og SFU for hver kerne.
- Konfigurerbar udgivelsesbredde af pipelinen (pipeline issue width).
- Valgfri delt hukommelse og niveauerne L1, L2 og L3 caches.
- Understøttelse af OpenCL 1.2 specifikationen.
- Mulighed for implementering på Altera Arria 10, Altera Stratix 10, Xilinx Alveo U50, U250, U280 og Xilinx Versal VCK5000.
- Udvidede instruktioner: «tex» til at accelerere teksturbehandling, vx_rast til at styre rasterisering, vx_rop til fragmentbehandling, dybde og transparens, vx_imadd til at udføre operationen «multiplicer og læg sammen», vx_wspawn, vx_tmc og vx_bar til at aktivere fronten af instruktionerne og trådene i dem (wavefront, sæt af tråde, der udføres parallelt i SIMD Engine), vx_split og vx_join.
- Understøttelse af det mellemliggende shader repræsentation SPIR-V implementeres gennem oversættelse til OpenCL.
- Til udvikling af applikationer tilbydes et værktøjssæt, der inkluderer tilpassede versioner af PoCL (kompilator og runtime OpenCL), LLVM/Clang, GCC og Binutils til arbejde med Vortex.
- Der understøttes simulering af chipens drift ved hjælp af Verilator (Verilog-simulator), RTLSIM (RTL-simulering) og SimX (software-simulering).
Blandt ændringerne i version Vortex 2.0:
- Mikroarkitekturen er blevet optimeret.
- Der er tilføjet støtte til 64-bit arkitektur af RISC-V instruktionssættet RV64IMAFD.
- Mulighed for implementering på FPGA Xilinx er tilføjet.
- Der er tilføjet støtte til LLVM 16 og Ubuntu 20.04.
- Refactoring er blevet udført og der er lavet rettelser af mangler identificeret ved kvalitetsvurderingen.
Kilde: opennet.ru
