Vortex — ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ GPGPU Π½Π° Π±Π°Π·Π΅ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ RISC-V, совмСстимый с OpenCL

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

Π’ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌ Π²ΠΈΠ΄Π΅ прСдоставляСтся Ρ‚ΠΈΠΏΠΎΠ²ΠΎΠΉ ISA RISC-V, Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½Ρ‹ΠΉ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ инструкциями, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ΠΌΠΈ для ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ GPU ΠΈ управлСния ΠΏΠΎΡ‚ΠΎΠΊΠ°ΠΌΠΈ. ΠŸΡ€ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ Π°Π²Ρ‚ΠΎΡ€Ρ‹ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΠΏΠΎΠΏΡ‹Ρ‚Π°Π»ΠΈΡΡŒ свСсти ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌΡƒ измСнСния Π² Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π΅ Π½Π°Π±ΠΎΡ€Π° ΠΊΠΎΠΌΠ°Π½Π΄ RISC-V, ΠΏΠΎ возмоТности ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΡƒΠΆΠ΅ ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠ΅ΡΡ Π²Π΅ΠΊΡ‚ΠΎΡ€Π½Ρ‹Π΅ инструкции. ΠŸΠΎΡ…ΠΎΠΆΠΈΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ Ρ‚Π°ΠΊΠΆΠ΅ примСняСтся Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ RV64X, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ‚Π°ΠΊΠΆΠ΅ Ρ€Π°Π·Π²ΠΈΠ²Π°Π΅Ρ‚ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ GPU Π½Π° Π±Π°Π·Π΅ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ RISC-V.

Vortex - ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ GPGPU Π½Π° Π±Π°Π·Π΅ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ RISC-V, совмСстимый с OpenCL

ВозмоТности Vortex ΠΏΠΎ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ ΠΏΠΎΠΊΠ° ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Ρ‹. ЗаявлСно ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ OpenGL ES Π½Π° Π±Π°Π·Π΅ Vortex, Π½ΠΎ Π² самом GPU ΠΏΠΎΠΊΠ° Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ инструкция «tex» для ускорСния ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ тСкстур, которая выполняСтся Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π½ΠΎΠ³ΠΎ ΡˆΠ΅ΠΉΠ΄Π΅Ρ€Π°. ВстроСнный растСризатор отсутствуСт — всС ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° гСомСтричСских ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ выполняСтся Π½Π° сторонС систСмного CPU, Π° Π±Π°Π·ΠΎΠ²Ρ‹Π΅ ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Ρ‹ для Ρ‚ΠΎΡ‡Π΅ΠΊ, Π»ΠΈΠ½ΠΈΠΉ ΠΈ Ρ‚Ρ€Π΅ΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠΎΠ², Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ΠΎΠ², Π³Π»ΡƒΠ±ΠΈΠ½Ρ‹ ΠΈ прозрачности, Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° с использованиСм ядра OpenCL.

Vortex - ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ GPGPU Π½Π° Π±Π°Π·Π΅ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ RISC-V, совмСстимый с OpenCL

Π’ Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ планируСтся Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ спСцифичныС для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ ISA, Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ API CUDA ΠΈ Vulkan, Π° Ρ‚Π°ΠΊΠΆΠ΅ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ для ускорСния систСм машинного обучСния ΠΈ Π°Π½Π°Π»ΠΈΠ·Π° Π΄Π°Π½Π½Ρ‹Ρ…. Для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ прСдлагаСтся инструмСнтарий, Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‰ΠΈΠΉ Π°Π΄Π°ΠΏΡ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Vortex Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ PoCL (компилятор ΠΈ runtime OpenCL), LLVM/Clang, GCC ΠΈ Binutils. ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ΡΡ симуляция Ρ€Π°Π±ΠΎΡ‚Ρ‹ Ρ‡ΠΈΠΏΠ° с использованиСм Verilator (Verilog-симулятор) ΠΈ SimX (программная симуляция).

Vortex - ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ GPGPU Π½Π° Π±Π°Π·Π΅ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ RISC-V, совмСстимый с OpenCL

ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ особСнности Vortex:

  • ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ Π½Π°Π±ΠΎΡ€Π° ΠΊΠΎΠΌΠ°Π½Π΄ RISC-V RV32IMF.
  • ΠœΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ‡ΠΈΠΏΠ° Π΄ΠΎ 64 ядСр с ΠΎΠΏΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΌΠΈ кэшами L2 ΠΈ L3.
  • КаТдоС ядро ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ 1024 ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с частотой 250 MHz.
  • Максимальная Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ ΠΌΠΎΡ‰Π½ΠΎΡΡ‚ΡŒ оцСниваСтся Π² 128 Gflops, Π° пропускная ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ‚ΡŒ памяти 16 GB/s. 32-ядСрная рСализация, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰Π°Ρ с частотой 200 Mhz, Π½Π° Π±Π°Π·Π΅ FPGA Altera Stratix 10 ΠΏΠΎΠΊΠ°Π·Π°Π»Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π² 25.6 GFlops.
  • ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° стандарта OpenCL 1.2.
  • Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π½Π° Π±Π°Π·Π΅ FPGA Intel Arria 10 ΠΈ Intel Stratix 10.

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