Ang RISC-V ay isang arkitektura na nakakuha ng maraming katanyagan Sa mga nagdaang taon, salamat sa open source (ISA) na disenyo nito at ito, at idinagdag na ito ay naging isa sa pinakamahalagang arkitektura ng processor dahil sa flexibility at modularity nito.
Salamat dun Ang iba't ibang mga proyekto batay sa RISC-V ay inilunsad at isa na rito ang Vortex na pag-uusapan natin ngayon dito sa blog.
Ano ang proyekto ng Vortex?
Puyo ng tubig es isang proyekto na bumuo ng isang GPGPU, batay sa arkitektura ng RISC-V. Ang proyekto ay idinisenyo upang magsagawa ng parallel computing gamit ang OpenCL API at ang SIMT execution model.
Ang core ng Vortex GPGPU ay isang generic na RISC-V, kung saan ipinatupad ang mga pagpapahusay na may ilang karagdagang tagubilin kinakailangan upang suportahan ang functionality ng GPU at kontrol sa thread. Kasabay nito, ang mga pagbabago sa arkitektura ng set ng pagtuturo ng RISC-V ay pinananatiling minimum at ginagamit ang mga kasalukuyang tagubilin sa vector hangga't maaari. Ang isang katulad na diskarte ay ginagamit sa proyekto ng RV64X, na bumubuo rin ng isang bukas na GPU batay sa mga teknolohiya ng RISC-V.
Isa pang tampok Vortex ay iyon ang GPGPU ay may mga advanced na tagubilin, kabilang sa mga ito ay: »tex» upang pabilisin ang pagpoproseso ng texture, «vx_rast» upang kontrolin ang rasterization, «vx_rop» upang mahawakan ang mga fragment, depth at transparency, «vx_imadd» upang magsagawa ng pagpaparami at pagdaragdag, «vx_wspawn» , "vx_tmc" at "vx_bar" para i-activate ang instruction edges at wavefronts (isang set ng mga thread na pinapagana ng SIMD engine), "vx_split" at "vx_join".
Ng mga cVortex pangunahing tampok na namumukod-tangi ang mga sumusunod ay matatagpuan:
- Suporta para sa 32-bit at 64-bit RISC-V instruction set architecture: RV32IMF at RV64IMAFD.
- Configurability: Nako-configure ang bilang ng mga core, mga bloke ng gawain (warps) at mga thread.
- Unit ng pagpoproseso: Nako-configure na numero ng ALU, FPU, LSU at SFU bawat core.
- Lapad ng Outlet: Adjustable pipe outlet width.
- Memorya: Opsyonal na nakabahaging memorya at L1, L2 at L3 na mga cache.
- Suporta sa pagtutukoy ng OpenCL 1.2.
- FPGA-based na pagpapatupad: Posibilidad ng pagpapatupad sa Altera Arria 10, Altera Stratix 10, Xilinx Alveo U50, U250, U280 at Xilinx Versal VCK5000 FPGAs.
- Suporta sa SPIR-V: Ipinatupad sa pamamagitan ng pagsasalin sa OpenCL.
Mga Tool sa Pag-develop: Isang toolset na may kasamang mga variant ng PoCL (OpenCL compiler at runtime), LLVM/Clang, GCC, at Binutils na inangkop para gumana sa Vortex. - Chip Simulation: Sinusuportahan gamit ang Verilator (Verilog simulator), RTLSIM (RTL simulation), at SimX (software simulation).
Skybox GPU
Bukod diyan, para sa mga graphics na batay sa mga teknolohiya ng Vortex, isang Skybox GPU ang ginagawa bukas na sumusuporta sa Vulkan graphics API. Nabanggit na ang Skybox prototype ay nilikha batay sa Altera Stratix 10 FPGA at kasama ang 32 core (512 thread) sa dalas ng 230 MHz Dapat tandaan na ito ang unang bukas na GPU na may software at hardware na katugma kasama si Vulkan
Ito ay nagkakahalaga ng pagbanggit na Sa kasalukuyan ang Vortex project ay nasa bersyon 2.1 nito, na kamakailang inilabas at ang mahahalagang pagbabago ay ipinatupad tulad ng: suporta sa pagsasama ng memorya (na sinusuportahan na ngayon), na-optimize ang pagproseso ng pagtuturo ng CSR, na-optimize ang labis na karga, isang bagong script ng configuration ng build, bukod sa iba pang mga bagay:
- Idinagdag ang kernel APIpawn_taskgroups upang magpatakbo ng mga kernel na gumagamit ng lokal na memorya at mga hadlang
- Bagong runtime extension para sa relocatable kernel argument at binary.
- Bagong runtime memory API na mga karagdagan: vx_mem_reserve, vx_mem_access, vx_mem_address
- bagong runtime API vx_check_occupancy
- Nagdagdag ng opsyon sa driver ng GPU upang subukan ang mga pagsubok sa OpenCL sa lokal na GPU (hal. blackbox.sh –driver=gpu –app=sgemm)
- Nagdagdag ng mga pagsubok sa OpenCL na ginagamit sa lokal na memorya (psum, sgemm2, sgemm3)
- Nagdagdag ng custom na vortex libc at librt na mga library na may control divergence instrumentation.
Kung interesado kang matuto nang higit pa tungkol dito, dapat mong malaman na ang mga eskematiko, mga paglalarawan ng mga bloke ng hardware sa wikang Verilog, ang simulator, ang mga driver at ang kasamang dokumentasyon ng disenyo ay ipinamamahagi sa ilalim ng lisensya ng Apache 2.0. Maaari mong suriin ang mga detalye sa sumusunod na link.