Vortex 3.0, fons apertus GPGPU in architectura RISC-V fundatus, divulgatum est

ДоступСн выпуск ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Vortex 3.0, Ρ€Π°Π·Π²ΠΈΠ²Π°ΡŽΡ‰Π΅Π³ΠΎ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ GPGPU Π½Π° Π±Π°Π·Π΅ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ Π½Π°Π±ΠΎΡ€Π° ΠΊΠΎΠΌΠ°Π½Π΄ RISC-V, рассчитанный Π½Π° Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Ρ‹Ρ… вычислСний с использованиСм API OpenCL ΠΈ ΠΌΠΎΠ΄Π΅Π»ΠΈ выполнСния SIMT (Single Instruction, Multiple Threads). ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ использован ΠΏΡ€ΠΈ ΠΏΡ€ΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠΈ исслСдований Π² области 3D-Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ ΠΈ ΠΏΡ€ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ Π½ΠΎΠ²Ρ‹Ρ… Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€ GPU. Π‘Ρ…Π΅ΠΌΡ‹, описания Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½Ρ‹Ρ… Π±Π»ΠΎΠΊΠΎΠ² Π½Π° языкС Verilog, симулятор, Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Ρ‹ ΠΈ ΡΠΎΠΏΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π°Ρ проСктная докумСнтация Ρ€Π°ΡΠΏΡ€ΠΎΡΡ‚Ρ€Π°Π½ΡΡŽΡ‚ΡΡ ΠΏΠΎΠ΄ Π»ΠΈΡ†Π΅Π½Π·ΠΈΠ΅ΠΉ Apache 2.0.

ΠžΡΠ½ΠΎΠ²Ρƒ GPGPU составляСт Ρ‚ΠΈΠΏΠΎΠ²ΠΎΠΉ ISA RISC-V, Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½Ρ‹ΠΉ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ инструкциями для ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ GPU ΠΈ управлСния ΠΏΠΎΡ‚ΠΎΠΊΠ°ΠΌΠΈ. ИзмСнСния Π² Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π΅ Π½Π°Π±ΠΎΡ€Π° ΠΊΠΎΠΌΠ°Π½Π΄ RISC-V свСдСны ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌΡƒ ΠΈ ΠΏΠΎ возмоТности ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΡƒΠΆΠ΅ ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠ΅ΡΡ Π²Π΅ΠΊΡ‚ΠΎΡ€Π½Ρ‹Π΅ инструкции. Π‘Ρ€Π΅Π΄ΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… инструкций: Β«texΒ» для ускорСния ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ тСкстур; vx_rast для управлСния растСризациСй, vx_rop для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ΠΎΠ², Π³Π»ΡƒΠ±ΠΈΠ½Ρ‹ ΠΈ прозрачности; vx_imadd для выполнСния ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Β«ΡƒΠΌΠ½ΠΎΠΆΠΈΡ‚ΡŒ ΠΈ ΡΠ»ΠΎΠΆΠΈΡ‚ΡŒΒ»; vx_wspawn, vx_split, vx_join, vx_tmc ΠΈ vx_bar для Π°ΠΊΡ‚ΠΈΠ²Π°Ρ†ΠΈΠΈ Π³Ρ€ΡƒΠΏΠΏ ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² (wavefront), ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎ выполняСмых SIMD Engine.

Π Π°Π·Π²ΠΈΠ²Π°Π΅ΠΌΡ‹ΠΉ GPGPU ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ 32- ΠΈ 64-разрядныС Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ Π½Π°Π±ΠΎΡ€Π° ΠΊΠΎΠΌΠ°Π½Π΄ RISC-V RV32IMF ΠΈ RV64IMAFD, ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ ΠΎΠΏΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΡƒΡŽ Ρ€Π°Π·Π΄Π΅Π»ΡΠ΅ΠΌΡƒΡŽ ΠΏΠ°ΠΌΡΡ‚ΡŒ, кэши ΡƒΡ€ΠΎΠ²Π½Π΅ΠΉ L1, L2 ΠΈ L3, Π° Ρ‚Π°ΠΊΠΆΠ΅ настраиваСмоС число ядСр, Π±Π»ΠΎΠΊΠΎΠ² Π·Π°Π΄Π°Ρ‡ (warps) ΠΈ ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ². Π’ свою ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ядра прСдусмотрСна Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ настраиваСмого числа ALU, FPU, LSU ΠΈ SFU. Для создания ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏΠΎΠ² ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ FPGA Xilinx ΠΈ Altera, Π° для симуляции Ρ€Π°Π±ΠΎΡ‚Ρ‹ Ρ‡ΠΈΠΏΠ° ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ Verilator (Verilog-симулятор), RTLSIM (симуляция RTL) ΠΈ SimX (программная симуляция).

Для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ прСдлагаСтся инструмСнтарий, Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‰ΠΈΠΉ Π°Π΄Π°ΠΏΡ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Vortex Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ PoCL (компилятор ΠΈ runtime OpenCL), LLVM/Clang, GCC ΠΈ Binutils. ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠΌ поддСрТиваСтся спСцификация OpenCL 1.2 ΠΈ Ρ‡Π΅Ρ€Π΅Π· Ρ‚Ρ€Π°Π½ΡΠ»ΡΡ†ΠΈΡŽ Π² OpenCL Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½ΠΎΠ³ΠΎ прСдставлСния ΡˆΠ΅ΠΉΠ΄Π΅Ρ€ΠΎΠ² SPIR-V.

Π‘Ρ€Π΅Π΄ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² Vortex 3.0:

  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½ Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½Ρ‹ΠΉ графичСский стСк, Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‰ΠΈΠΉ Π±Π»ΠΎΠΊΠΈ для растСризации, налоТСния тСкстур ΠΈ слияния Π²Ρ‹Π²ΠΎΠ΄Π° (OM β€” Output Merger). Для Mesa Π½Π° Π±Π°Π·Π΅ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ графичСского стСка ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ растСризатора lavapipe ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²Π»Π΅Π½ Vulkan-Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ vortexpipe.
  • Π Π°ΡΡˆΠΈΡ€Π΅Π½Ρ‹ возмоТности Ρ‚Π΅Π½Π·ΠΎΡ€Π½ΠΎΠ³ΠΎ ядра, ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½ΠΎΠ³ΠΎ для ускорСния выполнСния ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ машинного обучСния, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° структурной разрСТённости (structured sparsity) для сТатия вСсовых ΠΌΠ°Ρ‚Ρ€ΠΈΡ†.
  • Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° опСрация WGMMA (warpgroup-level matrix multiplication) для умноТСния ΠΌΠ°Ρ‚Ρ€ΠΈΡ† Π² асинхронном Ρ€Π΅ΠΆΠΈΠΌΠ΅.
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½ Π΄Π²ΠΈΠΆΠΎΠΊ DXA (Data Transfer Acceleration) для ускорСния ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ· глобальной Π² Π»ΠΎΠΊΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΏΠ°ΠΌΡΡ‚ΡŒ.
  • Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° новая Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° Π½Π° Π±Π°Π·Π΅ процСссора ΠΊΠΎΠΌΠ°Π½Π΄ (CP, Command Processor) ΠΈ Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Ρ‰ΠΈΠΊΠ° Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ядСр (KMU β€” Kernel Management Unit), ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π°Ρ вынСсти Π½Π° сторону Ρ‡ΠΈΠΏΠ° ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ диспСтчСризации Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ².
  • ΠŸΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½Π° новая runtime-Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰Π°Ρ Π² Π½Π΅Π±Π»ΠΎΠΊΠΈΡ€ΡƒΡŽΡ‰Π΅ΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅ ΠΈ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰Π°Ρ абстракции, транслируСмыС Π² Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½Ρ‹Π΅ асинхронно выполняСмыС ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹. ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ΡΡ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ, события, ΠΌΠΎΠ΄ΡƒΠ»ΠΈ ΠΈ синхронизация Π½Π° Π±Π°Π·Π΅ асинхронных Π±Π°Ρ€ΡŒΠ΅Ρ€ΠΎΠ² с сСмантикой arrive/wait/event.
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° ΡƒΠΊΠΎΡ€ΠΎΡ‡Π΅Π½Π½Ρ‹Ρ… инструкций RISC-V (RVC).
  • Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° аппаратная ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Π°Ρ‚ΠΎΠΌΠ°Ρ€Π½Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ (Hardware Atomics).
  • ΠŸΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΏΠ΅Ρ€Π΅Ρ€Π°Π±ΠΎΡ‚Π°Π½ FPU ΠΈ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½Ρ‹ Π½ΠΎΠ²Ρ‹Π΅ Π±Π»ΠΎΠΊΠΈ ΡƒΠΌΠ½ΠΎΠΆΠΈΡ‚Π΅Π»Π΅ΠΉ (Wallace-tree, Folded-radix) ΠΈ сумматоров (Kogge-Stone).
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½ стСк Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ памяти Π½Π° Π±Π°Π·Π΅ Π±Π»ΠΎΠΊΠ° управлСния ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ (MMU) с ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ 32-Π±ΠΈΡ‚Π½ΠΎΠΉ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ адрСсации SV32.
  • ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° RISC-V Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ Zicond c Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ условных ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ.
  • Π˜Π½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Π½ΠΎ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Ρ‚Π°ΠΊΡ‚ΠΎΠ²ΠΎΠΉ частотой (clock gating).
  • Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° языка HIP (Heterogeneous Interface for Portability) Ρ‡Π΅Ρ€Π΅Π· Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ chipStar, Ρ‚Ρ€Π°Π½ΡΠ»ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ HIP Π² SPIR-V.
  • ΠžΠ±Π΅ΡΠΏΠ΅Ρ‡Π΅Π½Π° полноцСнная интСграция с симулятором GEM5 ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° симулятора SimX Π½Π° Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π΅ TLM (Transaction-Level Modeling).
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° инструмСнтариСв Synopsys ΠΈ Yosys для синтСза Π»ΠΎΠ³ΠΈΠΊΠΈ для производства Ρ‡ΠΈΠΏΠΎΠ², Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° использования Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ стандартных элСмСнтов ASAP7 (7nm), SAED14 (14nm) ΠΈ NanGate (15nm).
  • Π­Ρ‚Π°Π»ΠΎΠ½Π½Ρ‹ΠΉ инструмСнтарий ΠΎΠ±Π½ΠΎΠ²Π»Ρ‘Π½ Π΄ΠΎ LLVM 20 ΠΈ POCL 7.0.

Source: opennet.ru

Emptum certos hospites pro locis cum praesidio DDoS, VPS VDS servers πŸ”₯ Eme hospitium interretiale fidum cum praesidio DDoS, servitores VPS VDS | ProHoster