Vortex 3.0-prosjektet, som utvikler en åpen kildekode-GPGPU basert på RISC-V instruksjonssettarkitektur og er designet for parallell databehandling ved hjelp av OpenCL API og SIMT (Single Instruction, Multiple Threads) utførelsesmodell, er nå tilgjengelig. Prosjektet kan også brukes til 3D-grafikkforskning og utvikling av nye GPU-arkitekturer. Skjemaene, maskinvareblokkbeskrivelsene i Verilog, simulatoren, driverne og tilhørende designdokumentasjon distribueres under Apache 2.0-lisensen.
GPGPU er basert på standard RISC-V ISA, utvidet med tilleggsinstruksjoner for å støtte GPU-funksjoner og trådhåndtering. Endringer i RISC-V instruksjonssettarkitekturen holdes til et minimum, og eksisterende vektorinstruksjoner brukes når det er mulig. Ytterligere instruksjoner inkluderer: "tex" for akselerering av teksturbehandling; vx_rast for rasteriseringskontroll; vx_rop for fragment-, dybde- og gjennomsiktighetsbehandling; vx_imadd for multipliserings- og legg-til-operasjoner; vx_wspawn, vx_split, vx_join, vx_tmc og vx_bar for aktivering av grupper av tråder (bølgefronter) som utføres parallelt av SIMD-motoren.

GPGPU-en som utvikles støtter 32- og 64-bits RISC-V RV32IMF- og RV64IMAFD-instruksjonssettarkitekturer og kan inkludere valgfritt delt minne, L1-, L2- og L3-hurtigbuffere, og et konfigurerbart antall kjerner, warps og tråder. Hver kjerne kan også inkludere et konfigurerbart antall ALU-er, FPU-er, LSU-er og SFU-er. Xilinx- og Altera FPGA-er kan brukes til prototyping, og Verilator (Verilog-simulator), RTLSIM (RTL-simulering) og SimX (programvaresimulering) kan brukes til brikkesimulering.
For applikasjonsutvikling tilbys et verktøysett, inkludert Vortex-tilpassede versjoner av PoCL (OpenCL-kompilator og runtime), LLVM/Clang, GCC og Binutils. Prosjektet støtter OpenCL 1.2-spesifikasjonen og implementerer støtte for SPIR-V-mellomrepresentasjonen av shadere via oversettelse til OpenCL.
Endringer i Vortex 3.0 inkluderer:
- En maskinvarebasert grafikkstabel er lagt til, inkludert blokker for rasterisering, teksturkartlegging og utdatasammenslåing (OM). En Vulkan-driver, vortexpipe, er utviklet for Mesa basert på den implementerte grafikkstakken og lavapipe-programvarens rasteriseringsverktøy.
- Funksjonene til Tensor Core, som er utviklet for å akselerere utførelsen av maskinlæringsmodeller, har blitt utvidet, og implementert støtte for strukturert sparsitet for komprimering av vektmatriser.
- WGMMA-operasjonen (warpgroup-level matrix multiplication) er implementert for matrisemultiplikasjon i asynkron modus.
- La til DXA-motor (Data Transfer Acceleration) for å øke hastigheten på dataoverføringen fra globalt til lokalt minne.
- En ny arkitektur er implementert basert på en kommandoprosessor (CP) og en maskinvareplanlegger for databehandlingskjerner (KMU - Kernel Management Unit), som tillater utsendelse av datatråder til chipsiden.
- Et nytt runtime-bibliotek foreslås som opererer i ikke-blokkerende modus og tilbyr abstraksjoner som oversettes til asynkront utførte maskinvarekommandoer. Køer, hendelser, moduler og synkronisering basert på asynkrone barrierer med ankomst/vent/hendelsesemantikk støttes.
- La til støtte for RISC-V forkortede instruksjoner (RVC).
- Maskinvarestøtte for atomoperasjoner (Hardware Atomics) er implementert.
- FPU-en har blitt fullstendig redesignet, og nye multiplikatorblokker (Wallace-tree, Folded-radix) og adderblokker (Kogge-Stone) har blitt introdusert.
- La til en virtuell minnestabel basert på minnehåndteringsenheten (MMU) med støtte for den 32-biters SV32 virtuelle adresseringsarkitekturen.
- Støtte for RISC-V Zicond-utvidelsen med implementering av betingede operasjoner.
- Integrert klokkestyring.
- Støtte for HIP-språket (Heterogeneous Interface for Portability) er implementert gjennom chipStar-rammeverket, som oversetter HIP til SPIR-V.
- Full integrasjon med GEM5-simulatoren er tilgjengelig, og støtte for SimX-simulatoren på TLM-arkitekturen (Transaction-Level Modeling) er lagt til.
- La til støtte for Synopsys- og Yosys-verktøysett for logisk syntese for chipproduksjon, samt støtte for bruk av standardelementbibliotekene ASAP7 (7nm), SAED14 (14nm) og NanGate (15nm).
- Referanseverktøykjeden er oppdatert til LLVM 20 og POCL 7.0.
Kilde: opennet.ru
