Projekt Vortex 3.0, koji razvija GPGPU otvorenog koda temeljen na arhitekturi skupa instrukcija RISC-V i dizajniran je za paralelno računanje korištenjem OpenCL API-ja i modela izvršavanja SIMT (Single Instruction, Multiple Threads), sada je dostupan. Projekt se također može koristiti za istraživanje 3D grafike i razvoj novih GPU arhitektura. Sheme, opisi hardverskih blokova u Verilogu, simulator, upravljački programi i prateća dokumentacija dizajna distribuiraju se pod licencom Apache 2.0.
GPGPU se temelji na standardnom RISC-V ISA-u, proširenom dodatnim instrukcijama za podršku GPU značajkama i upravljanju nitima. Promjene u arhitekturi RISC-V skupa instrukcija svedene su na minimum, a postojeće vektorske instrukcije koriste se kad god je to moguće. Dodatne instrukcije uključuju: "tex" za ubrzavanje obrade tekstura; vx_rast za kontrolu rasterizacije; vx_rop za obradu fragmenata, dubine i transparentnosti; vx_imadd za operacije množenja i zbrajanja; vx_wspawn, vx_split, vx_join, vx_tmc i vx_bar za aktiviranje grupa niti (valnih fronti) koje SIMD Engine izvršava paralelno.

Razvijeni GPGPU podržava 32- i 64-bitne RISC-V RV32IMF i RV64IMAFD arhitekture skupa instrukcija i može uključivati opcionalnu dijeljenu memoriju, L1, L2 i L3 predmemorije te konfiguriran broj jezgri, warpova i niti. Svaka jezgra također može uključivati konfiguriran broj ALU-ova, FPU-ova, LSU-ova i SFU-ova. Xilinx i Altera FPGA-ovi mogu se koristiti za izradu prototipova, a Verilator (Verilog simulator), RTLSIM (RTL simulacija) i SimX (softverska simulacija) mogu se koristiti za simulaciju čipa.
Za razvoj aplikacija nudi se skup alata, uključujući Vortex-prilagođene verzije PoCL-a (OpenCL kompajler i runtime), LLVM/Clang, GCC i Binutils. Projekt podržava OpenCL 1.2 specifikaciju i implementira podršku za SPIR-V međureprezentaciju shadera putem prevođenja u OpenCL.
Promjene u Vortexu 3.0 uključuju:
- Dodan je hardverski grafički stog, uključujući blokove za rasterizaciju, mapiranje tekstura i spajanje izlaza (OM). Vulkan upravljački program, vortexpipe, razvijen je za Mesu na temelju implementiranog grafičkog stoga i softverskog rasterizatora lavapipe.
- Mogućnosti Tensor Core-a, osmišljenog za ubrzavanje izvršavanja modela strojnog učenja, proširene su, implementirajući podršku za strukturiranu rijetkost za komprimiranje matrica težina.
- Za množenje matrica u asinkronom načinu rada implementirana je operacija WGMMA (množenje matrica na razini warpgroup-a).
- Dodan je DXA (Data Transfer Acceleration) mehanizam za ubrzavanje prijenosa podataka iz globalne u lokalnu memoriju.
- Implementirana je nova arhitektura temeljena na procesoru naredbi (CP) i hardverskom raspoređivaču računalnih jezgri (KMU - Kernel Management Unit), koja omogućuje raspoređivanje računalnih niti na stranu čipa.
- Predlaže se nova runtime biblioteka koja radi u neblokirajućem načinu rada i pruža apstrakcije koje se prevode u asinkrono izvršavane hardverske naredbe. Podržani su redovi čekanja, događaji, moduli i sinkronizacija temeljeni na asinkronim barijerama sa semantikom dolaska/čekanja/događaja.
- Dodana je podrška za skraćene instrukcije (RVC) RISC-V-a.
- Implementirana je hardverska podrška za atomske operacije (Hardware Atomics).
- FPU je potpuno redizajniran i uvedeni su novi blokovi množitelja (Wallace-tree, Folded-radix) i zbrajatelja (Kogge-Stone).
- Dodan je stog virtualne memorije temeljen na jedinici za upravljanje memorijom (MMU) s podrškom za 32-bitnu arhitekturu virtualnog adresiranja SV32.
- Podrška za RISC-V Zicond proširenje s implementacijom uvjetnih operacija.
- Integrirano upravljanje taktom.
- Podrška za HIP (Heterogeneous Interface for Portability) jezik implementirana je putem chipStar okvira, koji prevodi HIP u SPIR-V.
- Omogućena je potpuna integracija sa simulatorom GEM5, a dodana je i podrška za SimX simulator na TLM (Transaction-Level Modeling) arhitekturi.
- Dodana je podrška za Synopsys i Yosys alate za logičku sintezu za proizvodnju čipova, kao i podrška za korištenje biblioteka standardnih elemenata ASAP7 (7nm), SAED14 (14nm) i NanGate (15nm).
- Referentni alatni lanac ažuriran je na LLVM 20 i POCL 7.0.
Izvor: opennet.ru
