De release van het Vortex 3.0-project is beschikbaar, dat een open GPGPU ontwikkelt op basis van de RISC-V instructiesetarchitectuur, gericht op het uitvoeren van parallelle berekeningen met behulp van de OpenCL API en het SIMT (Single Instruction, Multiple Threads) uitvoeringsmodel. Het project kan ook worden gebruikt voor onderzoek op het gebied van 3D-grafica en voor de ontwikkeling van nieuwe GPU-architecturen. Schema's, beschrijvingen van hardwareblokken in Verilog, simulators, stuurprogramma's en bijbehorende projectdocumentatie worden verspreid onder de Apache 2.0-licentie.
De basis van GPGPU is de standaard ISA RISC-V, uitgebreid met aanvullende instructies ter ondersteuning van GPU-functies en stroombeheer. Wijzigingen in de RISC-V instructiesetarchitectuur zijn tot een minimum beperkt en waar mogelijk worden al bestaande vectorinstructies gebruikt. Onder de aanvullende instructies bevinden zich: 'tex' voor het versnellen van textuurverwerking; vx_rast voor het beheren van rasterisatie, vx_rop voor de verwerking van fragmenten, diepte en transparantie; vx_imadd voor het uitvoeren van de 'vermenigvuldigen en optellen' operatie; vx_wspawn, vx_split, vx_join, vx_tmc en vx_bar voor het activeren van groepen threads (wavefront) die parallel worden uitgevoerd door de SIMD Engine.

De ontwikkelde GPGPU ondersteunt 32- en 64-bits RISC-V instructiesetarchitecturen RV32IMF en RV64IMAFD, en kan optioneel gedeeld geheugen, L1-, L2- en L3-caches omvatten, evenals een configurabel aantal kernen, taakblokken (warps) en threads. Voor elke kern is de mogelijkheid voorzien om een configureerbaar aantal ALU, FPU, LSU en SFU in te schakelen. Voor prototypeontwikkeling kunnen Xilinx en Altera FPGA's worden gebruikt, en voor het simuleren van chipfunctionaliteit kunnen Verilator (Verilog-simulator), RTLSIM (RTL-simulatie) en SimX (softwarematige simulatie) worden toegepast.
Voor de ontwikkeling van applicaties wordt een toolkit aangeboden die aangepaste versies van PoCL (compiler en runtime OpenCL) voor gebruik met Vortex, LLVM/Clang, GCC en Binutils omvat. Het project ondersteunt de OpenCL 1.2-specificatie en door middel van translatie naar OpenCL is er ondersteuning voor de tussentijdse representatie van shaders SPIR-V gerealiseerd.
Onder de veranderingen in Vortex 3.0:
- Er is een hardware grafische stack toegevoegd, inclusief blokken voor rasterisatie, textuurlagen en uitvoerfusie (OM - Output Merger). Voor Mesa op basis van de geïmplementeerde grafische stack en de softwarematige rasterizer lavapipe is een Vulkan-stuurprogramma vortexpipe voorbereid.
- De mogelijkheden van de tensor-kern zijn uitgebreid, ontworpen om de uitvoering van modellen voor machine learning te versnellen, met ondersteuning voor structurele spaarzaamheid (structured sparsity) voor het comprimeren van gewichtsmatrices.
- De WGMMA-operatie (warpgroup-level matrix multiplication) is geïmplementeerd voor het asynchroon vermenigvuldigen van matrices.
- Een DXA-engine (Data Transfer Acceleration) is toegevoegd om de overdracht van gegevens van globale naar lokale geheugen te versnellen.
- Een nieuwe architectuur is geïmplementeerd op basis van de commandoprocessor (CP, Command Processor) en de hardware-scheduler voor rekeneenheden (KMU — Kernel Management Unit), die de dispatchoperaties van rekenstromen naar de chipzijde verlegt.
- Een nieuwe runtime-bibliotheek is aangeboden, die in een niet-blokkerende modus werkt en abstracties biedt die worden getransformeerd in hardware-asynchroon uitgevoerde instructies. Ondersteuning voor wachtrijen, evenementen, modules en synchronisatie op basis van asynchrone barrières met arrive/wait/event-semantiek.
- Ondersteuning voor verkorte instructies RISC-V (RVC) is toegevoegd.
- Hardwarematige ondersteuning voor atomische operaties (Hardware Atomics) is geïmplementeerd.
- De FPU is volledig herontworpen, en er zijn nieuwe vermenigvuldigingsmodules (Wallace-tree, Folded-radix) en sommodules (Kogge-Stone) voorgesteld.
- Een virtueel geheugengeheugen op basis van een geheugenbeheereenheid (MMU) met ondersteuning voor de 32-bits SV32-architectuur voor virtueel adresseren is toegevoegd.
- Ondersteuning voor de RISC-V-uitbreiding Zicond met implementatie van voorwaardelijke bewerkingen is gerealiseerd.
- Klokgating voor frequentiebeheer is geïntegreerd.
- Ondersteuning voor de HIP-taal (Heterogeneous Interface for Portability) is gerealiseerd via het chipStar-framework, dat HIP omzet naar SPIR-V.
- Volledige integratie met de GEM5-simulator is verzekerd en ondersteuning voor de SimX-simulator op basis van de TLM-architectuur (Transaction-Level Modeling) is toegevoegd.
- Ondersteuning voor Synopsys- en Yosys-tools voor logicasynthese voor chipproductie is toegevoegd, evenals ondersteuning voor het gebruik van bibliotheken van standaardcomponenten ASAP7 (7nm), SAED14 (14nm) en NanGate (15nm).
- De referentietools zijn bijgewerkt naar LLVM 20 en POCL 7.0.
Bron: opennet.ru
