āđāļāļĢāļāļāļēāļĢ Vortex 3.0 āļāļķāđāļāļāļąāļāļāļē GPGPU āđāļāļāđāļāđāļāļāļāļāļĢāđāļŠāļāļāļāļ·āđāļāļāļēāļāļāļāļāļŠāļāļēāļāļąāļāļĒāļāļĢāļĢāļĄāļāļļāļāļāļģāļŠāļąāđāļ RISC-V āđāļĨāļ°āļāļāļāđāļāļāļĄāļēāļŠāļģāļŦāļĢāļąāļāļāļēāļĢāļāļĢāļ°āļĄāļ§āļĨāļāļĨāđāļāļāļāļāļēāļāđāļāļĒāđāļāđ API OpenCL āđāļĨāļ°āđāļĄāđāļāļĨāļāļēāļĢāļāļģāļāļēāļ SIMT (Single Instruction, Multiple Threads) āļāļĢāđāļāļĄāđāļāđāļāļēāļāđāļĨāđāļ§ āđāļāļĢāļāļāļēāļĢāļāļĩāđāļĒāļąāļāļŠāļēāļĄāļēāļĢāļāđāļāđāļŠāļģāļŦāļĢāļąāļāļāļēāļĢāļ§āļīāļāļąāļĒāļāļĢāļēāļāļīāļ 3 āļĄāļīāļāļīāđāļĨāļ°āļāļēāļĢāļāļąāļāļāļēāļŠāļāļēāļāļąāļāļĒāļāļĢāļĢāļĄ GPU āđāļŦāļĄāđāđāļāđāļāļĩāļāļāđāļ§āļĒ āđāļāļāļāļąāļāļ§āļāļāļĢ āļāļģāļāļāļīāļāļēāļĒāļāļĨāđāļāļāļŪāļēāļĢāđāļāđāļ§āļĢāđāđāļ Verilog āđāļāļĢāđāļāļĢāļĄāļāļģāļĨāļāļ āđāļāļĢāđāļ§āļāļĢāđ āđāļĨāļ°āđāļāļāļŠāļēāļĢāļāļēāļĢāļāļāļāđāļāļāļāļĩāđāđāļāļĩāđāļĒāļ§āļāđāļāļāļāļąāđāļāļŦāļĄāļāđāļāļĒāđāļāļĢāđāļ āļēāļĒāđāļāđāđāļāļāļāļļāļāļēāļ Apache 2.0
GPGPU āđāļāđāļŠāļāļēāļāļąāļāļĒāļāļĢāļĢāļĄāļāļļāļāļāļģāļŠāļąāđāļ RISC-V āļĄāļēāļāļĢāļāļēāļ āđāļāļĒāđāļāļīāđāļĄāļāļģāļŠāļąāđāļāđāļāļīāđāļĄāđāļāļīāļĄāđāļāļ·āđāļāļĢāļāļāļĢāļąāļāļāļļāļāļŠāļĄāļāļąāļāļīāļāļāļ GPU āđāļĨāļ°āļāļēāļĢāļāļąāļāļāļēāļĢāđāļāļĢāļ āļāļēāļĢāđāļāļĨāļĩāđāļĒāļāđāļāļĨāļāļŠāļāļēāļāļąāļāļĒāļāļĢāļĢāļĄāļāļļāļāļāļģāļŠāļąāđāļ RISC-V āļāļąāđāļāļĄāļĩāļāđāļāļĒāļāļĩāđāļŠāļļāļ āđāļĨāļ°āđāļāđāļāļģāļŠāļąāđāļāđāļ§āļāđāļāļāļĢāđāļāļĩāđāļĄāļĩāļāļĒāļđāđāđāļĨāđāļ§āđāļĄāļ·āđāļāđāļāļāđāļāļēāļĄāļāļĩāđāđāļāđāļāđāļāđāļāđ āļāļģāļŠāļąāđāļāđāļāļīāđāļĄāđāļāļīāļĄāļāļĢāļ°āļāļāļāļāđāļ§āļĒ: "tex" āļŠāļģāļŦāļĢāļąāļāđāļĢāđāļāļāļ§āļēāļĄāđāļĢāđāļ§āđāļāļāļēāļĢāļāļĢāļ°āļĄāļ§āļĨāļāļĨāļāļ·āđāļāļāļīāļ§; vx_rast āļŠāļģāļŦāļĢāļąāļāļāļ§āļāļāļļāļĄāļāļēāļĢāđāļĢāļŠāđāļāļāļĢāđāđāļĢāđāļāļāļąāļ; vx_rop āļŠāļģāļŦāļĢāļąāļāļāļēāļĢāļāļĢāļ°āļĄāļ§āļĨāļāļĨāđāļāļĢāļāđāļĄāļāļāđ āļāļ§āļēāļĄāļĨāļķāļ āđāļĨāļ°āļāļ§āļēāļĄāđāļāļĢāđāļāđāļŠ; vx_imadd āļŠāļģāļŦāļĢāļąāļāļāļēāļĢāļāļģāđāļāļīāļāļāļēāļĢāļāļđāļāđāļĨāļ°āļāļ§āļ; vx_wspawn, vx_split, vx_join, vx_tmc āđāļĨāļ° vx_bar āļŠāļģāļŦāļĢāļąāļāļāļēāļĢāđāļāļīāļāđāļāđāļāļēāļāļāļĨāļļāđāļĄāđāļāļĢāļ (wavefronts) āļāļĩāđāļāļģāļāļēāļāđāļāļāļāļāļēāļāđāļāļĒ SIMD Engine

GPGPU āļāļĩāđāļāļģāļĨāļąāļāļāļąāļāļāļēāļāļĒāļđāđāļāļĩāđāļĢāļāļāļĢāļąāļāļŠāļāļēāļāļąāļāļĒāļāļĢāļĢāļĄāļāļļāļāļāļģāļŠāļąāđāļ RISC-V RV32IMF āđāļĨāļ° RV64IMAFD āđāļāļ 32 āđāļĨāļ° 64 āļāļīāļ āđāļĨāļ°āļŠāļēāļĄāļēāļĢāļāļĢāļ§āļĄāļŦāļāđāļ§āļĒāļāļ§āļēāļĄāļāļģāļĢāđāļ§āļĄ (shared memory), āđāļāļ L1, L2 āđāļĨāļ° L3 (āļāļąāļ§āđāļĨāļ·āļāļāđāļŠāļĢāļīāļĄ) āđāļĨāļ°āļāļģāļāļ§āļāļāļāļĢāđ, āļ§āļēāļĢāđāļ āđāļĨāļ°āđāļāļĢāļāļāļĩāđāļāļģāļŦāļāļāļāđāļēāđāļāđ āđāļāđāļĨāļ°āļāļāļĢāđāļĒāļąāļāļŠāļēāļĄāļēāļĢāļāļĢāļ§āļĄāļāļģāļāļ§āļ ALU, FPU, LSU āđāļĨāļ° SFU āļāļĩāđāļāļģāļŦāļāļāļāđāļēāđāļāđ āļŠāļēāļĄāļēāļĢāļāđāļāđ FPGA āļāļāļ Xilinx āđāļĨāļ° Altera āļŠāļģāļŦāļĢāļąāļāļāļēāļĢāļŠāļĢāđāļēāļāļāđāļāđāļāļ āđāļĨāļ°āļŠāļēāļĄāļēāļĢāļāđāļāđ Verilator (āđāļāļĢāđāļāļĢāļĄāļāļģāļĨāļāļ Verilog), RTLSIM (āđāļāļĢāđāļāļĢāļĄāļāļģāļĨāļāļ RTL) āđāļĨāļ° SimX (āđāļāļĢāđāļāļĢāļĄāļāļģāļĨāļāļāļāļāļāļāđāđāļ§āļĢāđ) āļŠāļģāļŦāļĢāļąāļāļāļēāļĢāļāļģāļĨāļāļāļāļīāļ
āļŠāļģāļŦāļĢāļąāļāļāļēāļĢāļāļąāļāļāļēāđāļāļāļāļĨāļīāđāļāļāļąāļ āļĄāļĩāļāļļāļāđāļāļĢāļ·āđāļāļāļĄāļ·āļāđāļŦāđāđāļĨāļ·āļāļāđāļāđ āļāļķāđāļāļĢāļ§āļĄāļāļķāļ PoCL (āļāļāļĄāđāļāđāļĨāļāļĢāđāđāļĨāļ°āļĢāļąāļāđāļāļĄāđ OpenCL) āđāļ§āļāļĢāđāļāļąāļāļāļĩāđāļāļĢāļąāļāđāļŦāđāđāļāđāļēāļāļąāļ Vortex, LLVM/Clang, GCC āđāļĨāļ° Binutils āđāļāļĢāļāļāļēāļĢāļāļĩāđāļĢāļāļāļĢāļąāļāļāđāļāļāļģāļŦāļāļ OpenCL 1.2 āđāļĨāļ°āļāļģāđāļāļīāļāļāļēāļĢāļŠāļāļąāļāļŠāļāļļāļāļāļēāļĢāđāļŠāļāļāļāļĨāļĢāļ°āļāļąāļāļāļĨāļēāļ SPIR-V āļāļāļāđāļāđāļāļāļĢāđāļāđāļēāļāļāļēāļĢāđāļāļĨāļāđāļāđāļ OpenCL
āļāļēāļĢāđāļāļĨāļĩāđāļĒāļāđāļāļĨāļāđāļ Vortex 3.0 āļāļĢāļ°āļāļāļāļāđāļ§āļĒ:
- āļĄāļĩāļāļēāļĢāđāļāļīāđāļĄāļŠāđāļ§āļāļāļĢāļ°āļāļāļāļāļĢāļēāļāļīāļāļŪāļēāļĢāđāļāđāļ§āļĢāđ āļāļķāđāļāļĢāļ§āļĄāļāļķāļāļāļĨāđāļāļāļŠāļģāļŦāļĢāļąāļāļāļēāļĢāđāļĢāļŠāđāļāļāļĢāđāđāļĢāđāļāļāļąāļ āļāļēāļĢāđāļĄāļāļāļ·āđāļāļāļīāļ§ āđāļĨāļ°āļāļēāļĢāļĢāļ§āļĄāđāļāļēāļāđāļāļļāļ (OM) āđāļāļĢāđāļ§āļāļĢāđ Vulkan āļāļ·āđāļ vortexpipe āđāļāđāļĢāļąāļāļāļēāļĢāļāļąāļāļāļēāļŠāļģāļŦāļĢāļąāļ Mesa āđāļāļĒāļāļīāļāļāļēāļāļŠāđāļ§āļāļāļĢāļ°āļāļāļāļāļĢāļēāļāļīāļāļāļĩāđāļāļģāļĄāļēāđāļāđāļāļēāļāđāļĨāļ°āļāļāļāļāđāđāļ§āļĢāđāđāļĢāļŠāđāļāļāļĢāđāđāļĢāđāļāļāļĢāđ lavapipe
- āļāļ§āļēāļĄāļŠāļēāļĄāļēāļĢāļāļāļāļ Tensor Core āļāļķāđāļāļāļāļāđāļāļāļĄāļēāđāļāļ·āđāļāđāļĢāđāļāļāļ§āļēāļĄāđāļĢāđāļ§āđāļāļāļēāļĢāļāļĢāļ°āļĄāļ§āļĨāļāļĨāđāļĄāđāļāļĨāļāļēāļĢāđāļĢāļĩāļĒāļāļĢāļđāđāļāļāļāđāļāļĢāļ·āđāļāļ āđāļāđāļĢāļąāļāļāļēāļĢāļāļĒāļēāļĒāđāļāļīāđāļĄāđāļāļīāļĄ āđāļāļĒāđāļāļīāđāļĄāļāļēāļĢāļĢāļāļāļĢāļąāļāļāļ§āļēāļĄāđāļāļēāļāļēāļāđāļāļīāļāđāļāļĢāļāļŠāļĢāđāļēāļāļŠāļģāļŦāļĢāļąāļāļāļēāļĢāļāļĩāļāļāļąāļāđāļĄāļāļĢāļīāļāļāđāļāđāļģāļŦāļāļąāļ
- āļāļēāļĢāļāļģāđāļāļīāļāļāļēāļĢ WGMMA (warpgroup-level matrix multiplication) āđāļāđāļāļđāļāļāļģāļĄāļēāđāļāđāļŠāļģāļŦāļĢāļąāļāļāļēāļĢāļāļđāļāđāļĄāļāļĢāļīāļāļāđāđāļāđāļŦāļĄāļāļāļ°āļāļīāļāđāļāļĢāļāļąāļŠ
- āđāļāļīāđāļĄāļāļĨāđāļ DXA (Data Transfer Acceleration) āđāļāļ·āđāļāđāļĢāđāļāļāļ§āļēāļĄāđāļĢāđāļ§āđāļāļāļēāļĢāļāđāļēāļĒāđāļāļāļāđāļāļĄāļđāļĨāļāļēāļāļŦāļāđāļ§āļĒāļāļ§āļēāļĄāļāļģāļŠāđāļ§āļāļāļĨāļēāļāđāļāļĒāļąāļāļŦāļāđāļ§āļĒāļāļ§āļēāļĄāļāļģāļ āļēāļĒāđāļ
- āļĄāļĩāļāļēāļĢāļāļģāļŠāļāļēāļāļąāļāļĒāļāļĢāļĢāļĄāđāļŦāļĄāđāļĄāļēāđāļāđāđāļāļĒāļāļīāļāļāļēāļāļāļąāļ§āļāļĢāļ°āļĄāļ§āļĨāļāļĨāļāļģāļŠāļąāđāļ (CP) āđāļĨāļ°āļāļąāļ§āļāļąāļāļāļēāļĢāļēāļāđāļ§āļĨāļēāļŪāļēāļĢāđāļāđāļ§āļĢāđāļāļāļāļāļāļĢāđāļāļĢāļ°āļĄāļ§āļĨāļāļĨ (KMU - Kernel Management Unit) āļāļķāđāļāļāđāļ§āļĒāđāļŦāđāļŠāļēāļĄāļēāļĢāļāļŠāđāļāđāļāļĢāļāļāļēāļĢāļāļĢāļ°āļĄāļ§āļĨāļāļĨāđāļāļĒāļąāļāļāļąāđāļāļāļīāļāđāļāđ
- āļĄāļĩāļāļēāļĢāđāļŠāļāļāđāļĨāļāļĢāļēāļĢāļĩāļĢāļąāļāđāļāļĄāđāđāļŦāļĄāđāļāļĩāđāļāļģāļāļēāļāđāļāđāļŦāļĄāļāđāļĄāđāļāļĨāđāļāļāđāļĨāļ°āđāļŦāđāđāļāļ§āļāļīāļāđāļāļīāļāļāļēāļĄāļāļĢāļĢāļĄāļāļĩāđāđāļāļĨāļāđāļāđāļāļāļģāļŠāļąāđāļāļŪāļēāļĢāđāļāđāļ§āļĢāđāļāļĩāđāļāļģāđāļāļīāļāļāļēāļĢāđāļāļāļāļ°āļāļīāļāđāļāļĢāļāļąāļŠ āļĢāļāļāļĢāļąāļāļāļīāļ§ āđāļŦāļāļļāļāļēāļĢāļāđ āđāļĄāļāļđāļĨ āđāļĨāļ°āļāļēāļĢāļāļīāļāđāļāļĢāđāļāļāđāđāļāļĒāđāļāđāļāļąāļ§āļāļąāđāļāđāļāļāļāļ°āļāļīāļāđāļāļĢāļāļąāļŠāļāļĩāđāļĄāļĩāļāļ§āļēāļĄāļŦāļĄāļēāļĒāđāļāļ arrive/wait/event
- āđāļāļīāđāļĄāļāļēāļĢāļĢāļāļāļĢāļąāļāļāļģāļŠāļąāđāļāļĒāđāļ RISC-V (RVC)
- āđāļāđāļĄāļĩāļāļēāļĢāļāļģāļĢāļ°āļāļāļŪāļēāļĢāđāļāđāļ§āļĢāđāļĄāļēāđāļāđāđāļāļ·āđāļāļĢāļāļāļĢāļąāļāļāļēāļĢāļāļģāđāļāļīāļāļāļēāļĢāđāļāļāļāļ°āļāļāļĄāļīāļ (Hardware Atomics) āđāļĨāđāļ§
- āļŦāļāđāļ§āļĒāļāļĢāļ°āļĄāļ§āļĨāļāļĨāļāļĻāļāļīāļĒāļĄ (FPU) āđāļāđāļĢāļąāļāļāļēāļĢāļāļāļāđāļāļāđāļŦāļĄāđāļāļąāđāļāļŦāļĄāļ āđāļĨāļ°āļĄāļĩāļāļēāļĢāļāļģāļāļĨāđāļāļāļāļąāļ§āļāļđāļāđāļŦāļĄāđ (Wallace-tree, Folded-radix) āđāļĨāļ°āļāļĨāđāļāļāļāļąāļ§āļāļ§āļāđāļŦāļĄāđ (Kogge-Stone) āđāļāđāļēāļĄāļēāđāļāđ
- āđāļāļīāđāļĄāļŠāđāļāđāļāļŦāļāđāļ§āļĒāļāļ§āļēāļĄāļāļģāđāļŠāļĄāļ·āļāļāđāļāļĒāļāļīāļāļāļēāļĄāļŦāļāđāļ§āļĒāļāļąāļāļāļēāļĢāļŦāļāđāļ§āļĒāļāļ§āļēāļĄāļāļģ (MMU) āļāļķāđāļāļĢāļāļāļĢāļąāļāļŠāļāļēāļāļąāļāļĒāļāļĢāļĢāļĄāđāļāļāđāļāļĢāļŠāđāļŠāļĄāļ·āļāļ SV32 āđāļāļ 32 āļāļīāļ
- āļĢāļāļāļĢāļąāļāļŠāđāļ§āļāļāļĒāļēāļĒ RISC-V Zicond āļāļĢāđāļāļĄāļāļēāļĢāđāļāđāļāļēāļāļāļēāļĢāļāļģāđāļāļīāļāļāļēāļĢāđāļāļāļĄāļĩāđāļāļ·āđāļāļāđāļ
- āļāļēāļĢāļāļ§āļāļāļļāļĄāļāļąāļāļŦāļ§āļ°āļŠāļąāļāļāļēāļāļāļēāļŽāļīāļāļēāđāļāļāļāļđāļĢāļāļēāļāļēāļĢ
- āļāļēāļĢāļĢāļāļāļĢāļąāļāļ āļēāļĐāļē 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 āđāļĨāđāļ§
āļāļĩāđāļĄāļē: opennet.ru
