Π”ΠΎΡΡ‚ΡŠΠΏΠ΅Π½ Π΅ Vortex 2.2, ΠΎΡ‚Π²ΠΎΡ€Π΅Π½ GPGPU, Π±Π°Π·ΠΈΡ€Π°Π½ Π½Π° Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° RISC-V

ΠŸΡƒΠ±Π»ΠΈΠΊΡƒΠ²Π°Π½ Π΅ новият Π±Ρ€ΠΎΠΉ Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Vortex 2.2, ΠΊΠΎΠΉΡ‚ΠΎ Ρ€Π°Π·Π²ΠΈΠ²Π° ΠΎΡ‚Π²ΠΎΡ€Π΅Π½ 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_tmc ΠΈ vx_bar Π·Π° Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°Π½Π΅ Π½Π° Ρ„Ρ€ΠΎΠ½Ρ‚ΠΎΠ²Π΅Ρ‚Π΅ Π½Π° инструкциитС ΠΈ ΠΏΠΎΡ‚ΠΎΠΊΠΈΡ‚Π΅ Π² тях (wavefront, Π½Π°Π±ΠΎΡ€ ΠΎΡ‚ нишки, изпълнявани ΠΏΠ°Ρ€Π°Π»Π΅Π»Π½ΠΎ ΠΎΡ‚ SIMD Engine), vx_split ΠΈ vx_join.

Π”ΠΎΡΡ‚ΡŠΠΏΠ΅Π½ Π΅ Vortex 2.2, ΠΎΡ‚Π²ΠΎΡ€Π΅Π½ GPGPU, Π±Π°Π·ΠΈΡ€Π°Π½ Π½Π° Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° RISC-V

Развиваният GPGPU ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ° 32- ΠΈ 64-Π±ΠΈΡ‚ΠΎΠ²ΠΈ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€ΠΈ Π½Π° Π½Π°Π±ΠΎΡ€ ΠΎΡ‚ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ RISC-V RV32IMF ΠΈ RV64IMAFD ΠΈ ΠΌΠΎΠΆΠ΅ Π΄Π° Π²ΠΊΠ»ΡŽΡ‡Π²Π° ΠΎΠΏΡ†ΠΈΠΎΠ½Π°Π»Π½Π° сподСлСна ΠΏΠ°ΠΌΠ΅Ρ‚, кСшовС Π½Π° Π½ΠΈΠ²Π° L1, L2 ΠΈ L3, ΠΊΠ°ΠΊΡ‚ΠΎ ΠΈ настраиваСм Π±Ρ€ΠΎΠΉ ядра, Π±Π»ΠΎΠΊΠΎΠ²Π΅ Π·Π°Π΄Π°Ρ‡ΠΈ (warps) ΠΈ ΠΏΠΎΡ‚ΠΎΡ†ΠΈ. Π—Π° всяко ядро Π΅ ΠΏΡ€Π΅Π΄Π²ΠΈΠ΄Π΅Π½Π° Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ Π·Π° Π²ΠΊΠ»ΡŽΡ‡Π²Π°Π½Π΅ Π½Π° настраиваСм Π±Ρ€ΠΎΠΉ ALU, FPU, LSU ΠΈ SFU. Π—Π° създаванС Π½Π° ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏΠΈ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ FPGA Altera Arria 10, Altera Stratix 10, Xilinx Alveo U50, U250, U280 ΠΈ Xilinx Versal VCK5000. Π—Π° симулация Π½Π° Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚Π° Π½Π° Ρ‡ΠΈΠΏΠ° ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ Verilator (Verilog симулатор), RTLSIM (симулация Π½Π° RTL) ΠΈ SimX (софтуСрна симулация).

Π—Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°Ρ‚Π° Π½Π° прилоТСния сС ΠΏΡ€Π΅Π΄Π»Π°Π³Π° инструмСнтариум, Π²ΠΊΠ»ΡŽΡ‡Π²Π°Ρ‰ Π°Π΄Π°ΠΏΡ‚ΠΈΡ€Π°Π½ΠΈ Π·Π° Ρ€Π°Π±ΠΎΡ‚Π° с Vortex Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΈ PoCL (ΠΊΠΎΠΌΠΏΠΈΠ»Π°Ρ‚ΠΎΡ€ ΠΈ runtime OpenCL), LLVM/Clang, GCC ΠΈ Binutils. ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ΡŠΡ‚ ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ° спСцификация OpenCL 1.2 ΠΈ Ρ‡Ρ€Π΅Π· транслация Π² OpenCL Ρ€Π΅Π°Π»ΠΈΠ·ΠΈΡ€Π° ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π½Π° ΠΌΠ΅ΠΆΠ΄ΠΈΠ½Π½ΠΎΡ‚ΠΎ прСдставянС Π½Π° ΡˆΠ΅ΠΉΠ΄Π΅Ρ€ΠΈΡ‚Π΅ SPIR-V. Π—Π° Π³Ρ€Π°Ρ„ΠΈΠΊΠ° Π½Π° Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ Vortex сС Ρ€Π°Π·Π²ΠΈΠ²Π° ΠΎΡ‚Π²ΠΎΡ€Π΅Π½ GPU Skybox, ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ°Ρ‰ графичния API Vulkan. ΠŸΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏΡŠΡ‚ Skybox, създадСн Π½Π° Π±Π°Π·Π°Ρ‚Π° Π½Π° FPGA Altera Stratix 10 ΠΈ Π²ΠΊΠ»ΡŽΡ‡Π²Π°Ρ‰ 32 ядра (512 ΠΏΠΎΡ‚ΠΎΠΊΠ°), успя Π΄Π° постигнС производитСлност Π½Π° Π·Π°Π»ΠΈΠ²ΠΊΠ° ΠΎΡ‚ 3.7 гигапиксСла Π² сСкунда (29.4 Π³ΠΈΠ³Π°Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ Π² сСкунда) ΠΏΡ€ΠΈ частота ΠΎΡ‚ 230 MHz.

Π‘Ρ€Π΅Π΄ ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈΡ‚Π΅ Π² вСрсия Vortex 2.2:

  • Π”ΠΎΠ±Π°Π²Π΅Π½ Π΅ API vx_spawn_taskgroups Π·Π° стартиранС Π½Π° ядра, ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ°Ρ‰ΠΈ сСгмСнтирано изпълнСниС Π½Π° 3D Π·Π°Π΄Π°Ρ‡ΠΈ.
  • Π”ΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π½Π° ZICOND, Ρ€Π°Π·ΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ Π½Π° Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π°Ρ‚Π° Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° RISC-V, осигуряващо условно изпълнСниС Π½Π° ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π±Π΅Π· разклоняванС.
  • ΠšΠΎΠΌΠΏΠΈΠ»Π°Ρ‚ΠΎΡ€ΡŠΡ‚ OpenCL Π΅ ΠΏΡ€Π΅Π²Π΅Π΄Π΅Π½ Π½Π° ΠΏΠ»Π°Π½ΠΈΡ€Π°Π½Π΅ Π½Π° ΠΈΠ·ΠΏΡŠΠ»Π½Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° Π½ΠΈΠ²ΠΎ ΠΎΡ‚Π΄Π΅Π»Π½ΠΈ ΠΏΠΎΡ‚ΠΎΡ†ΠΈ (thread-level, всСки ΠΏΠΎΡ‚ΠΎΠΊ изпълнява своя Π·Π°Π΄Π°Ρ‡Π° нСзависимо ΠΎΡ‚ Π΄Ρ€ΡƒΠ³ΠΈΡ‚Π΅ ΠΏΠΎΡ‚ΠΎΡ†ΠΈ), Π° Π½Π΅ Π³Ρ€ΡƒΠΏΠΈ Π·Π°Π΄Π°Ρ‡ΠΈ (warp-level), ΠΊΠ°ΠΊΡ‚ΠΎ бСшС ΠΏΡ€Π΅Π΄ΠΈ.
  • Π’ OpenCL Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½Π° ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π½Π° JIT компилация ΠΈ 64-Π±ΠΈΡ‚ΠΎΠ²ΠΈ ядра.
  • Π Π΅Π°Π»ΠΈΠ·ΠΈΡ€Π°Π½Π° Π΅ ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π½Π° Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π½ΠΎ Π·Π°Ρ€Π΅ΠΆΠ΄Π°Π½Π΅ Π½Π° Vortex runtime.
  • ΠŸΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½Π° Π΅ Π½ΠΎΠ²Π° докумСнтация Π·Π° ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°Π½Π΅ Π½Π° FPGA Xilinx.
  • Π’ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΎ Π΅ тСстванС Π½Π° синтСза Π½Π° Π»ΠΎΠ³ΠΈΠΊΠ°, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ инструмСнтария Yosys.
  • Π’ ΠΉΠ΅Ρ€Π°Ρ€Ρ…ΠΈΡ‡Π½ΠΈΡ‚Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ flush ΠΈ Π² Ρ€Π΅ΠΆΠΈΠΌ write-back Π΅ осигурСна ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π½Π° кСша.
  • ΠŸΡ€ΠΎΠ²Π΅Π΄Π΅Π½Π° Π΅ оптимизация Π½Π° скоростта Π½Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° scoreboard ΠΈ Ρ€Π°Π±ΠΎΡ‚Π° с ΠΎΠΏΠ΅Ρ€Π°Π½Π΄ΠΈ Π½Π° Π½ΠΈΠ²ΠΎ рСгистрови прСдавания (RTL, Register Transfer Level).
  • Π”ΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π½Π° симулатор DRAM ΠΏΠ°ΠΌΠ΅Ρ‚ Ramulator 2.0.
  • ΠžΡΡƒΡ‰Π΅ΡΡ‚Π²Π΅Π½ Π΅ ΠΏΡ€Π΅Ρ…ΠΎΠ΄ към Π½ΠΎΠ²ΠΈ вСрсии Verilator 5.0 (симулатор SystemVerilog) ΠΈ LLVM 18.0, ΠΊΠ°ΠΊΡ‚ΠΎ ΠΈ ΠΎΠ±Π½ΠΎΠ²Π΅Π½ инструмСнтария Π½Π° Π±Π°Π·Π° CentOS 7.9.
  • ВмСсто систСмата Π·Π° Π½Π΅ΠΏΡ€Π΅ΠΊΡŠΡΠ½Π°Ρ‚Π° интСграция Travis CI Π΅ задСйстван сСрвиз GitHub CI.

Π˜Π·Ρ‚ΠΎΡ‡Π½ΠΈΠΊ: opennet.ru

ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС с Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ πŸ”₯ ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС с Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ | ProHoster