ΠΡΠ±Π»ΠΈΠΊΡΠ²Π°Π½ΠΎ Π΅ Π²ΡΠΎΡΠΎΡΠΎ ΠΈΠ·Π΄Π°Π½ΠΈΠ΅ Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠ° Vortex, ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ²Π°Ρ ΠΎΡΠ²ΠΎΡΠ΅Π½ GPGPU, Π±Π°Π·ΠΈΡΠ°Π½ Π½Π° Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ°ΡΠ° Π½Π° Π½Π°Π±ΠΎΡΠ° ΠΎΡ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ RISC-V, ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½ Π·Π° ΠΈΠ·Π²ΡΡΡΠ²Π°Π½Π΅ Π½Π° ΠΏΠ°ΡΠ°Π»Π΅Π»Π½ΠΈ ΠΈΠ·ΡΠΈΡΠ»Π΅Π½ΠΈΡ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° API Π½Π° OpenCL ΠΈ ΠΌΠΎΠ΄Π΅Π»Π° Π·Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ SIMT (ΠΠ΄ΠΈΠ½ΠΈΡΠ½Π° ΠΈΠ½ΡΡΡΡΠΊΡΠΈΡ, ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ Π½ΠΈΡΠΊΠΈ). ΠΡΠΎΠ΅ΠΊΡΡΡ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΈ Π·Π° ΠΏΡΠΎΠ²Π΅ΠΆΠ΄Π°Π½Π΅ Π½Π° ΠΈΠ·ΡΠ»Π΅Π΄Π²Π°Π½ΠΈΡ Π² ΠΎΠ±Π»Π°ΡΡΡΠ° Π½Π° 3D Π³ΡΠ°ΡΠΈΠΊΠΈΡΠ΅ ΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ²Π°Π½Π΅ Π½Π° Π½ΠΎΠ²ΠΈ GPU Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠΈ. Π‘Ρ Π΅ΠΌΠΈΡΠ΅, ΠΎΠΏΠΈΡΠ°Π½ΠΈΡΡΠ° Π½Π° Ρ Π°ΡΠ΄ΡΠ΅ΡΠ½ΠΈΡΠ΅ Π±Π»ΠΎΠΊΠΎΠ²Π΅ Π½Π° Π΅Π·ΠΈΠΊΠ° Verilog, ΡΠΈΠΌΡΠ»Π°ΡΠΎΡΠ°, Π΄ΡΠ°ΠΉΠ²Π΅ΡΠΈΡΠ΅ ΠΈ ΠΏΡΠΈΠ΄ΡΡΠΆΠ°Π²Π°ΡΠ°ΡΠ° ΠΏΡΠΎΠ΅ΠΊΡΠ½Π° Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ ΡΠ΅ ΡΠ°Π·ΠΏΡΠΎΡΡΡΠ°Π½ΡΠ²Π°Ρ ΠΏΠΎΠ΄ Π»ΠΈΡΠ΅Π½Π·Π° Apache 2.0.
Π―Π΄ΡΠΎΡΠΎ Π½Π° GPGPU Π΅ ΠΎΠ±Ρ RISC-V ISA, ΡΠ°Π·ΡΠΈΡΠ΅Π½ Ρ Π½ΡΠΊΠΎΠΈ Π΄ΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½ΠΈ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΈ Π·Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ°Π½Π΅ Π½Π° ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π½ΠΎΡΡΡΠ° Π½Π° GPU ΠΈ ΠΊΠΎΠ½ΡΡΠΎΠ»Π° Π½Π° Π½ΠΈΡΠΊΠ°ΡΠ°. Π ΡΡΡΠΎΡΠΎ Π²ΡΠ΅ΠΌΠ΅ ΠΏΡΠΎΠΌΠ΅Π½ΠΈΡΠ΅ Π² Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ°ΡΠ° Π½Π° Π½Π°Π±ΠΎΡΠ° ΠΎΡ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ RISC-V ΡΠ° ΡΠ²Π΅Π΄Π΅Π½ΠΈ Π΄ΠΎ ΠΌΠΈΠ½ΠΈΠΌΡΠΌ ΠΈ, ΠΊΠΎΠ³Π°ΡΠΎ Π΅ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ ΡΡΡΠ΅ΡΡΠ²ΡΠ²Π°ΡΠΈ Π²Π΅ΠΊΡΠΎΡΠ½ΠΈ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ. ΠΠΎΠ΄ΠΎΠ±Π΅Π½ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π² ΠΏΡΠΎΠ΅ΠΊΡΠ° RV64X, ΠΊΠΎΠΉΡΠΎ ΡΡΡΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ²Π° ΠΎΡΠ²ΠΎΡΠ΅Π½ GPU, Π±Π°Π·ΠΈΡΠ°Π½ Π½Π° RISC-V ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ.

ΠΠ° Π³ΡΠ°ΡΠΈΠΊΠΈ, Π±Π°Π·ΠΈΡΠ°Π½ΠΈ Π½Π° ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ Vortex, ΡΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ²Π° ΠΎΡΠ²ΠΎΡΠ΅Π½ΠΈΡΡ GPU Skybox, ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ°Ρ Π³ΡΠ°ΡΠΈΡΠ½ΠΈΡ API Π½Π° Vulkan. ΠΡΠΎΡΠΎΡΠΈΠΏΡΡ Π½Π° Skybox, ΡΡΠ·Π΄Π°Π΄Π΅Π½ Π½Π° Π±Π°Π·Π°ΡΠ° Π½Π° Altera Stratix 10 FPGA ΠΈ Π²ΠΊΠ»ΡΡΠ²Π°Ρ 32 ΡΠ΄ΡΠ° (512 Π½ΠΈΡΠΊΠΈ), Π½Π°ΠΏΡΠ°Π²ΠΈ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΡΠΈΠ³Π°Π½Π΅ΡΠΎ Π½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡ Π½Π° Π·Π°ΠΏΡΠ»Π²Π°Π½Π΅ ΠΎΡ 230 Π³ΠΈΠ³Π°ΠΏΠΈΠΊΡΠ΅Π»Π° Π² ΡΠ΅ΠΊΡΠ½Π΄Π° (3.7 Π³ΠΈΠ³Π°ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ Π² ΡΠ΅ΠΊΡΠ½Π΄Π°) ΠΏΡΠΈ ΡΠ΅ΡΡΠΎΡΠ° ΠΎΡ 29.4 MHz. ΠΡΠ±Π΅Π»ΡΠ·Π²Π° ΡΠ΅, ΡΠ΅ ΡΠΎΠ²Π° Π΅ ΠΏΡΡΠ²ΠΈΡΡ ΠΎΡΠ²ΠΎΡΠ΅Π½ GPU ΡΡΡ ΡΠΎΡΡΡΠ΅ΡΠ½Π° ΠΈ Ρ Π°ΡΠ΄ΡΠ΅ΡΠ½Π° ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ, ΠΊΠΎΡΡΠΎ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ° Vulkan.
ΠΡΠ½ΠΎΠ²Π½ΠΈ Ρ Π°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠΈ Π½Π° Vortex:
- ΠΠΎΠ΄Π΄ΡΡΠΆΠ° 32- ΠΈ 64-Π±ΠΈΡΠΎΠ²ΠΈ RISC-V Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠΈ Π½Π° Π½Π°Π±ΠΎΡ ΠΎΡ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ RV32IMF ΠΈ RV64IMAFD.
- ΠΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΡΠ΅ΠΌ Π±ΡΠΎΠΉ ΡΠ΄ΡΠ°, Π±Π»ΠΎΠΊΠΎΠ²Π΅ ΡΡΡ Π·Π°Π΄Π°ΡΠΈ (ΠΈΠ·ΠΊΡΠΈΠ²ΡΠ²Π°Π½ΠΈΡ) ΠΈ Π½ΠΈΡΠΊΠΈ.
- ΠΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΡΠ΅ΠΌ Π±ΡΠΎΠΉ ALU, FPU, LSU ΠΈ SFU Π½Π° ΡΠ΄ΡΠΎ.
- Π Π΅Π³ΡΠ»ΠΈΡΡΠ΅ΠΌΠ° ΡΠΈΡΠΈΠ½Π° Π½Π° ΡΡΡΠ±ΠΎΠΏΡΠΎΠ²ΠΎΠ΄Π°.
- ΠΠΏΡΠΈΠΎΠ½Π°Π»Π½Π° ΡΠΏΠΎΠ΄Π΅Π»Π΅Π½Π° ΠΏΠ°ΠΌΠ΅Ρ ΠΈ ΠΊΠ΅Ρ L1, L2 ΠΈ L3.
- ΠΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° OpenCL 1.2 ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ.
- ΠΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ Π·Π° Π²Π½Π΅Π΄ΡΡΠ²Π°Π½Π΅ Π½Π° Π±Π°Π·Π°ΡΠ° Π½Π° FPGA Altera Arria 10, Altera Stratix 10, Xilinx Alveo U50, U250, U280 ΠΈ Xilinx Versal VCK5000.
- Π Π°Π·ΡΠΈΡΠ΅Π½ΠΈ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ: "tex" Π·Π° ΡΡΠΊΠΎΡΡΠ²Π°Π½Π΅ Π½Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ°ΡΠ° Π½Π° ΡΠ΅ΠΊΡΡΡΡΠΈ, vx_rast Π·Π° ΠΊΠΎΠ½ΡΡΠΎΠ» Π½Π° ΡΠ°ΡΡΠ΅ΡΠΈΠ·Π°ΡΠΈΡΡΠ°, vx_rop Π·Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° ΡΡΠ°Π³ΠΌΠ΅Π½ΡΠΈ, Π΄ΡΠ»Π±ΠΎΡΠΈΠ½Π° ΠΈ ΠΏΡΠΎΠ·ΡΠ°ΡΠ½ΠΎΡΡ, vx_imadd Π·Π° ΠΈΠ·Π²ΡΡΡΠ²Π°Π½Π΅ Π½Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π·Π° ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈ Π΄ΠΎΠ±Π°Π²ΡΠ½Π΅, vx_wspawn, vx_tmc ΠΈ vx_bar Π·Π° Π°ΠΊΡΠΈΠ²ΠΈΡΠ°Π½Π΅ Π½Π° ΡΡΠ±ΠΎΠ²Π΅ Π½Π° ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ ΠΈ Π²ΡΠ»Π½ΠΎΠ²ΠΈ ΡΡΠΎΠ½ΡΠΎΠ²Π΅, Π½Π°Π±ΠΎΡ ΠΎΡ Π½ΠΈΡΠΊΠΈ ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π°Π½ΠΈ ΠΏΠ°ΡΠ°Π»Π΅Π»Π½ΠΎ ΠΎΡ SIMD Engine), vx_split ΠΈ vx_join.
- ΠΠΎΠ΄Π΄ΡΡΠΆΠΊΠ°ΡΠ° Π·Π° ΠΌΠ΅ΠΆΠ΄ΠΈΠ½Π½ΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΡΠ½Π΅ Π½Π° SPIR-V ΡΠ΅ΠΉΠ΄ΡΡΠΈ ΡΠ΅ ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ° ΡΡΠ΅Π· ΠΏΡΠ΅Π²ΠΎΠ΄ ΠΊΡΠΌ OpenCL.
- ΠΠ° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΡΠ΅ ΠΏΡΠ΅Π΄Π»Π°Π³Π° ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠΌ, Π²ΠΊΠ»ΡΡΠ²Π°Ρ Π²Π°ΡΠΈΠ°Π½ΡΠΈ Π½Π° PoCL (ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΎΡ ΠΈ ΡΡΠ΅Π΄Π° Π·Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ OpenCL), LLVM/Clang, GCC ΠΈ Binutils, Π°Π΄Π°ΠΏΡΠΈΡΠ°Π½ΠΈ Π·Π° ΡΠ°Π±ΠΎΡΠ° Ρ Vortex.
- Π‘ΠΈΠΌΡΠ»Π°ΡΠΈΡΡΠ° Π½Π° ΡΠΈΠΏΠΎΠ²Π΅ ΡΠ΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ° Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° Verilator (ΡΠΈΠΌΡΠ»Π°ΡΠΎΡ Π½Π° Verilog), RTLSIM (ΡΠΈΠΌΡΠ»Π°ΡΠΈΡ Π½Π° RTL) ΠΈ SimX (ΡΠΈΠΌΡΠ»Π°ΡΠΈΡ Π½Π° ΡΠΎΡΡΡΠ΅Ρ).
Π‘ΡΠ΅Π΄ ΠΏΡΠΎΠΌΠ΅Π½ΠΈΡΠ΅ Π²ΡΠ² Vortex 2.0:
- ΠΠΈΠΊΡΠΎΠ°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ°ΡΠ° Π΅ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠ°Π½Π°.
- ΠΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° 64-Π±ΠΈΡΠΎΠ²Π°ΡΠ° Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ° Π½Π° Π½Π°Π±ΠΎΡΠ° ΠΎΡ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ RISC-V RV64IMAFD.
- ΠΠΎΠ±Π°Π²Π΅Π½Π° Π΅ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ Π·Π° Π²Π½Π΅Π΄ΡΡΠ²Π°Π½Π΅ Π½Π° Π±Π°Π·Π°ΡΠ° Π½Π° Xilinx FPGA.
- ΠΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° LLVM 16 ΠΈ Ubuntu 20.04.
- ΠΠ·Π²ΡΡΡΠ΅Π½ Π΅ ΡΠ΅ΡΠ°ΠΊΡΠΎΡΠΈΠ½Π³ ΠΈ Π΄Π΅ΡΠ΅ΠΊΡΠΈΡΠ΅, ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΡΠΈΡΠ°Π½ΠΈ ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΠΎΡΠ΅Π½ΠΊΠ°ΡΠ° Π½Π° ΠΊΠ°ΡΠ΅ΡΡΠ²ΠΎΡΠΎ, ΡΠ° ΠΊΠΎΡΠΈΠ³ΠΈΡΠ°Π½ΠΈ.
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: opennet.ru
