Megérkezett a Vortex 3.0 projekt kiadása, amely a RISC-V utasítássor architektúrára épülő nyitott GPGPU-t fejleszti, párhuzamos számítások végrehajtására alkalmas az OpenCL API és a SIMT (Single Instruction, Multiple Threads) végrehajtási modell segítségével. A projekt további kutatásokhoz is felhasználható a 3D grafika területén, valamint új GPU architektúrák kifejlesztéséhez. Az ábrák, a hardverblokk leírások Verilog nyelven, a szimulátorok, vezetőprogramok és a kapcsolódó projekt dokumentáció Apache 2.0 licenc alatt terjesztett.
A GPGPU alapját a RISC-V jellemző ISA képezi, amelyet kiegészítő utasításokkal bővítenek a GPU funkciók és a szálkezelés támogatására. Az RISC-V utasítássor architektúrában végzett változtatások minimálisra csökkentendők, és ahol csak lehet, a már létező vektoriális utasításokat használják. A kiegészítő utasítások között szerepel: 'tex' a textúrák feldolgozásának felgyorsítására; vx_rast a raszterizálás irányítására, vx_rop a fragmentumok, mélység és átlátszóság feldolgozására; vx_imadd a 'szorozni és összeadni' művelet végrehajtására; vx_wspawn, vx_split, vx_join, vx_tmc és vx_bar a párhuzamosan végrehajtott szálcsoportok (wavefront) aktiválására.

Az új GPGPU támogatja a 32- és 64-bites RISC-V utasításkészleteket, az RV32IMF-t és az RV64IMAFD-t, és tartalmazhat opcionális megosztott memóriát, L1, L2 és L3 cache-eket, valamint állítható számú magot, feladatblokkot (warp) és szálat. Minden egyes mag számára lehetőség van az állítható számú ALU, FPU, LSU és SFU aktiválására. Prototípusok létrehozásához Xilinx és Altera FPGA-k használhatók, a chipek működésének szimulációjára pedig Verilator (Verilog szimulátor), RTLSIM (RTL szimuláció) és SimX (szoftveres szimuláció) alkalmazható.
Alkalmazások fejlesztéséhez egy olyan eszközkészlet áll rendelkezésre, amely tartalmazza a Vortex működéséhez alkalmazott PoCL (OpenCL fordító és runtime), LLVM/Clang, GCC és Binutils módosított verzióit. A projekt támogatja az OpenCL 1.2 specifikációt, és az OpenCL-be való fordításon keresztül megvalósítja a SPIR-V shaderek köztes reprezentációjának támogatását.
A Vortex 3.0-ban végrehajtott változtatások között szerepel:
- Hozzáadott egy hardveres grafikai veremet, amely tartalmazza a raszterizálás, textúra-rétegzés és a kimenet egyesítése (OM - Output Merger) blokkjait. A megvalósított grafikai verem és a lavapipe szoftver raszterizáló alapján a Mesa számára elkészült a vortexpipe Vulkan-vezető.
- Kiterjesztették a tensoros mag képességeit, amely a gépi tanulási modellek végrehajtásának felgyorsítására szolgál, és támogatja a strukturált sparszitás (structured sparsity) megvalósítását a súlymátrixok tömörítéséhez.
- Megvalósult a WGMMA (warpgroup-level matrix multiplication) művelet a mátrixok aszinkron módon történő szorzására.
- Hozzáadták a DXA (Data Transfer Acceleration) motorját, amely felgyorsítja az adatok globálisból helyi memória átvitelét.
- Új architektúrát valósítottak meg az utasításkészlet processzora (CP, Command Processor) és a számítási magok hardveres ütemezője (KMU — Kernel Management Unit) alapján, amely lehetővé teszi a számítási folyamatok ütemezésének chipre történő áthelyezését.
- Új, blokkolásmentes üzemmódban működő runtime könyvtár került javaslatra, amely absztrakciókat biztosít, amelyek a hardveres aszinkron végrehajtott parancsokba transzformálódnak. Támogatják a sorokat, eseményeket, modulokat és az aszinkron barrier alapú szinkronizációt arrive/wait/event szemantikával.
- Támogatás került a rövidített RISC-V (RVC) utasításokra.
- Hardveres támogatást valósítottak meg az atomos műveletekhez (Hardware Atomics).
- Teljesen átdolgozták az FPU-t, és új szorzóblokkokat (Wallace-tree, Folded-radix) és összeadókat (Kogge-Stone) javasoltak.
- Hozzáadták a virtuális memória veremét az MMU (Memory Management Unit) vezérlőegység alapján, amely támogatja a 32 bites virtuális címzés SV32 architektúráját.
- Támogatás került a RISC-V Zicond kiterjesztéshez, amely feltételes műveletek megvalósítását segíti.
- Integrálva lett a órajel-irányítás (clock gating).
- Megvalósult a HIP (Heterogeneous Interface for Portability) nyelv támogatása a chipStar keretrendszeren keresztül, amely a HIP-et SPIR-V-be transzformálja.
- Teljes körű integráció biztosított a GEM5 szimulátorral, és hozzáadták a SimX szimulátor támogatását a TLM (Transaction-Level Modeling) architektúrára.
- Támogatás került a Synopsys és Yosys logikai szintézis eszközeinek a chipgyártás érdekében, és a ASAP7 (7nm), SAED14 (14nm) és NanGate (15nm) szabványos alkatrész könyvtárak használata is biztosított.
- A referencia eszközkészlet frissítve lett az LLVM 20 és POCL 7.0 verziókra.
Forrás: opennet.ru
