De tweede editie van het Vortex-project is gepubliceerd, dat een open GPGPU ontwikkelt op basis van de RISC-V instructiesetarchitectuur, ontworpen voor het uitvoeren van parallelle berekeningen met behulp van de OpenCL API en het SIMT-model (Single Instruction, Multiple Threads). Het project kan ook worden gebruikt voor onderzoek naar 3D-grafiek en de ontwikkeling van nieuwe GPU-architecturen. Schema's, beschrijvingen van hardwaremodules in Verilog, simulators, stuurprogramma's en bijbehorende projectdocumentatie worden verspreid onder de Apache 2.0-licentie.
De basis van GPGPU is een typische RISC-V ISA, uitgebreid met enkele extra instructies die nodig zijn voor de ondersteuning van GPU-functies en het beheer van threads. Wijzigingen in de architectuur van de RISC-V instructieset zijn tot een minimum beperkt en indien mogelijk worden al bestaande vectorinstructies gebruikt. Een soortgelijke benadering wordt gevolgd in het RV64X-project, dat ook een open GPU ontwikkelt op basis van RISC-V-technologieƫn.

Voor graphics op Vortex-technologieƫn wordt de open GPU Skybox ontwikkeld, die de grafische API Vulkan ondersteunt. De prototype Skybox, gebouwd op de FPGA Altera Stratix 10 en met 32 kernen (512 threads), maakte het mogelijk om bij een frequentie van 230 MHz een vulprestaties van 3,7 gigapixels per seconde (29,4 gigatransacties per seconde) te behalen. Dit is de eerste open GPU met software- en hardware-implementatie die Vulkan ondersteunt.
Belangrijkste kenmerken van Vortex:
- Ondersteuning voor 32- en 64-bits RISC-V instructiesetarchitecturen RV32IMF en RV64IMAFD.
- Instelbaar aantal kernen, taakblokken (warps) en threads.
- Instelbaar aantal ALU, FPU, LSU en SFU per kern.
- Instelbare breedte van de pijplijnafgifte (pipeline issue width).
- Optionele gedeelde geheugen en caches op niveaus L1, L2 en L3.
- Ondersteuning voor OpenCL specificatie 1.2.
- Mogelijkheid voor implementatie op basis van Altera Arria 10, Altera Stratix 10, Xilinx Alveo U50, U250, U280 en Xilinx Versal VCK5000.
- Uitgebreide instructies: 'tex' voor verbeterde texture-processing, vx_rast voor rasterisatiebeheer, vx_rop voor fragment-, diepte- en transparantieverwerking, vx_imadd voor de operatie 'vermenigvuldigen en optellen', vx_wspawn, vx_tmc en vx_bar voor het activeren van instructie- en threadfronten daarin (wavefront, groep threads die gelijktijdig door SIMD Engine worden uitgevoerd), vx_split en vx_join.
- Ondersteuning voor de tussentijdse representatie van shaders SPIR-V wordt gerealiseerd door vertaling naar OpenCL.
- Voor de ontwikkeling van toepassingen wordt een toolkit aangeboden, die aangepaste versies van PoCL (compiler en runtime OpenCL), LLVM/Clang, GCC en Binutils voor gebruik met Vortex omvat.
- Simulatie van chipwerkzaamheden wordt ondersteund met behulp van Verilator (Verilog-simulator), RTLSIM (RTL-simulatie) en SimX (softwarematige simulatie).
De wijzigingen in versie Vortex 2.0 zijn onder andere:
- De microarchitectuur is geoptimaliseerd.
- Ondersteuning voor de 64-bit RISC-V instructiesetarchitectuur RV64IMAFD is toegevoegd.
- Mogelijkheid tot implementatie op Xilinx FPGA's is toegevoegd.
- Ondersteuning voor LLVM 16 en Ubuntu 20.04 is toegevoegd.
- Refactoring heeft plaatsgevonden en er zijn correcties aangebracht aan tekortkomingen die zijn ontdekt tijdens de kwaliteitsbeoordeling.
Bron: opennet.ru
