RISC-V ๋ช ๋ น์ด ์ธํธ ์ํคํ ์ฒ ๊ธฐ๋ฐ์ ์คํ ์์ค GPGPU์ธ Vortex 3.0 ํ๋ก์ ํธ๊ฐ ๊ณต๊ฐ๋์์ต๋๋ค. ์ด ํ๋ก์ ํธ๋ OpenCL API์ SIMT(๋จ์ผ ๋ช ๋ น์ด ๋ค์ค ์ค๋ ๋) ์คํ ๋ชจ๋ธ์ ์ฌ์ฉํ์ฌ ๋ณ๋ ฌ ์ปดํจํ ์ ์ง์ํ๋๋ก ์ค๊ณ๋์์ต๋๋ค. 3D ๊ทธ๋ํฝ ์ฐ๊ตฌ ๋ฐ ์๋ก์ด GPU ์ํคํ ์ฒ ๊ฐ๋ฐ์๋ ํ์ฉ๋ ์ ์์ต๋๋ค. ํ๋ก๋, Verilog๋ก ์์ฑ๋ ํ๋์จ์ด ๋ธ๋ก ์ค๋ช , ์๋ฎฌ๋ ์ดํฐ, ๋๋ผ์ด๋ฒ ๋ฐ ๊ด๋ จ ์ค๊ณ ๋ฌธ์๋ Apache 2.0 ๋ผ์ด์ ์ค ํ์ ๋ฐฐํฌ๋ฉ๋๋ค.
GPGPU๋ ํ์ค RISC-V ISA๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ๋ฉฐ, GPU ๊ธฐ๋ฅ ๋ฐ ์ค๋ ๋ ๊ด๋ฆฌ๋ฅผ ์ง์ํ๊ธฐ ์ํ ์ถ๊ฐ ๋ช ๋ น์ด๋ก ํ์ฅ๋์์ต๋๋ค. RISC-V ๋ช ๋ น์ด ์ธํธ ์ํคํ ์ฒ ๋ณ๊ฒฝ์ ์ต์ํ๋์์ผ๋ฉฐ, ๊ฐ๋ฅํ ํ ๊ธฐ์กด ๋ฒกํฐ ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํ์ต๋๋ค. ์ถ๊ฐ ๋ช ๋ น์ด์๋ ํ ์ค์ฒ ์ฒ๋ฆฌ ๊ฐ์์ ์ํ "tex", ๋์คํฐํ ์ ์ด๋ฅผ ์ํ vx_rast, ํ๋๊ทธ๋จผํธ, ๊น์ด ๋ฐ ํฌ๋ช ๋ ์ฒ๋ฆฌ๋ฅผ ์ํ vx_rop, ๊ณฑ์ ๋ฐ ๋ง์ ์ฐ์ฐ์ ์ํ vx_imadd, ๊ทธ๋ฆฌ๊ณ SIMD ์์ง์์ ๋ณ๋ ฌ๋ก ์คํ๋๋ ์ค๋ ๋ ๊ทธ๋ฃน(์จ์ด๋ธํ๋ก ํธ)์ ํ์ฑํํ๋ vx_wspawn, vx_split, vx_join, vx_tmc, vx_bar ๋ฑ์ด ์์ต๋๋ค.

๊ฐ๋ฐ ์ค์ธ GPGPU๋ 32๋นํธ ๋ฐ 64๋นํธ RISC-V RV32IMF ๋ฐ RV64IMAFD ๋ช ๋ น์ด ์ธํธ ์ํคํ ์ฒ๋ฅผ ์ง์ํ๋ฉฐ, ์ ํ์ ์ผ๋ก ๊ณต์ ๋ฉ๋ชจ๋ฆฌ, L1, L2, L3 ์บ์๋ฅผ ํฌํจํ๊ณ , ์ฝ์ด, ์ํ, ์ค๋ ๋ ์๋ฅผ ๊ตฌ์ฑํ ์ ์์ต๋๋ค. ๊ฐ ์ฝ์ด๋ ๋ํ ๊ตฌ์ฑ ๊ฐ๋ฅํ ์์ ALU, FPU, LSU, SFU๋ฅผ ํฌํจํ ์ ์์ต๋๋ค. ํ๋กํ ํ์ดํ์๋ Xilinx ๋ฐ Altera FPGA๋ฅผ ์ฌ์ฉํ ์ ์์ผ๋ฉฐ, ์นฉ ์๋ฎฌ๋ ์ด์ ์๋ Verilator(Verilog ์๋ฎฌ๋ ์ดํฐ), RTLSIM(RTL ์๋ฎฌ๋ ์ด์ ), SimX(์ํํธ์จ์ด ์๋ฎฌ๋ ์ด์ )๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ์ ์ํด Vortex์ ์ต์ ํ๋ PoCL(OpenCL ์ปดํ์ผ๋ฌ ๋ฐ ๋ฐํ์), LLVM/Clang, GCC, Binutils๋ฅผ ํฌํจํ๋ ํดํท์ด ์ ๊ณต๋ฉ๋๋ค. ์ด ํ๋ก์ ํธ๋ OpenCL 1.2 ์ฌ์์ ์ง์ํ๋ฉฐ, SPIR-V ์ ฐ์ด๋ ์ค๊ฐ ํํ์ OpenCL๋ก ๋ณํํ์ฌ ์ง์ํฉ๋๋ค.
Vortex 3.0์ ๋ณ๊ฒฝ ์ฌํญ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ํ๋์จ์ด ๊ทธ๋ํฝ ์คํ์ด ์ถ๊ฐ๋์์ผ๋ฉฐ, ์ฌ๊ธฐ์๋ ๋์คํฐํ, ํ ์ค์ฒ ๋งคํ ๋ฐ ์ถ๋ ฅ ๋ณํฉ(OM) ๋ธ๋ก์ด ํฌํจ๋ฉ๋๋ค. ๊ตฌํ๋ ๊ทธ๋ํฝ ์คํ๊ณผ lavapipe ์ํํธ์จ์ด ๋์คํฐ๋ผ์ด์ ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก Mesa์ฉ Vulkan ๋๋ผ์ด๋ฒ์ธ vortexpipe๊ฐ ๊ฐ๋ฐ๋์์ต๋๋ค.
- ๋จธ์ ๋ฌ๋ ๋ชจ๋ธ ์คํ ์๋๋ฅผ ๋์ด๋๋ก ์ค๊ณ๋ ํ ์ ์ฝ์ด์ ๊ธฐ๋ฅ์ด ํ์ฅ๋์ด ๊ฐ์ค์น ํ๋ ฌ ์์ถ์ ์ํ ๊ตฌ์กฐ์ ํฌ์์ฑ ์ง์์ด ๊ตฌํ๋์์ต๋๋ค.
- WGMMA(์ํ๊ทธ๋ฃน ์์ค ํ๋ ฌ ๊ณฑ์ ) ์ฐ์ฐ์ ๋น๋๊ธฐ ๋ชจ๋์์ ํ๋ ฌ ๊ณฑ์ ์ ์ํด ๊ตฌํ๋์์ต๋๋ค.
- ๊ธ๋ก๋ฒ ๋ฉ๋ชจ๋ฆฌ์์ ๋ก์ปฌ ๋ฉ๋ชจ๋ฆฌ๋ก์ ๋ฐ์ดํฐ ์ ์ก ์๋๋ฅผ ๋์ด๊ธฐ ์ํด DXA(๋ฐ์ดํฐ ์ ์ก ๊ฐ์) ์์ง์ ์ถ๊ฐํ์ต๋๋ค.
- ๋ช ๋ น ์ฒ๋ฆฌ๊ธฐ(CP)์ ํ๋์จ์ด ์ปดํจํ ์ฝ์ด ์ค์ผ์ค๋ฌ(KMU - ์ปค๋ ๊ด๋ฆฌ ์ฅ์น)๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ๋ ์๋ก์ด ์ํคํ ์ฒ๊ฐ ๊ตฌํ๋์์ผ๋ฉฐ, ์ด๋ฅผ ํตํด ์ปดํจํ ์ค๋ ๋๋ฅผ ์นฉ ์ธก์ผ๋ก ๋ถ๋ฐฐํ ์ ์์ต๋๋ค.
- ๋ณธ ๋ ผ๋ฌธ์์๋ ๋น์ฐจ๋จ ๋ชจ๋๋ก ๋์ํ๋ฉฐ ๋น๋๊ธฐ์ ์ผ๋ก ์คํ๋๋ ํ๋์จ์ด ๋ช ๋ น์ผ๋ก ๋ณํํ๋ ์ถ์ํ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ ์๋ก์ด ๋ฐํ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ ์ํฉ๋๋ค. ์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ๋์ฐฉ/๋๊ธฐ/์ด๋ฒคํธ ์๋ฏธ ์ฒด๊ณ๋ฅผ ๊ฐ๋ ๋น๋๊ธฐ ์ฅ๋ฒฝ ๊ธฐ๋ฐ์ ํ, ์ด๋ฒคํธ, ๋ชจ๋ ๋ฐ ๋๊ธฐํ๋ฅผ ์ง์ํฉ๋๋ค.
- RISC-V ๋จ์ถ ๋ช ๋ น์ด(RVC) ์ง์์ด ์ถ๊ฐ๋์์ต๋๋ค.
- ์์ ์ฐ์ฐ์ ๋ํ ํ๋์จ์ด ์ง์(ํ๋์จ์ด ์ํ ๋ฏน์ค)์ด ๊ตฌํ๋์์ต๋๋ค.
- FPU๋ ์์ ํ ์ฌ์ค๊ณ๋์์ผ๋ฉฐ ์๋ก์ด ๊ณฑ์ ๊ธฐ(์๋ฆฌ์ค ํธ๋ฆฌ, ํด๋๋ ๋ผ๋์ค) ๋ฐ ๋ง์ ๊ธฐ(์ฝ๊ฒ-์คํค) ๋ธ๋ก์ด ๋์ ๋์์ต๋๋ค.
- 32๋นํธ SV32 ๊ฐ์ ์ฃผ์ ์ง์ ์ํคํ ์ฒ๋ฅผ ์ง์ํ๋ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ ์ฅ์น(MMU) ๊ธฐ๋ฐ์ ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ ์คํ์ ์ถ๊ฐํ์ต๋๋ค.
- ์กฐ๊ฑด๋ถ ์ฐ์ฐ ๊ตฌํ์ ํฌํจํ RISC-V Zicond ํ์ฅ ๊ธฐ๋ฅ์ ๋ํ ์ง์.
- ํตํฉ ํด๋ก ๊ฒ์ดํ .
- HIP(Heterogeneous Interface for Portability) ์ธ์ด์ ๋ํ ์ง์์ HIP๋ฅผ SPIR-V๋ก ๋ณํํ๋ chipStar ํ๋ ์์ํฌ๋ฅผ ํตํด ๊ตฌํ๋์์ต๋๋ค.
- GEM5 ์๋ฎฌ๋ ์ดํฐ์์ ์๋ฒฝํ ํตํฉ์ด ์ ๊ณต๋์์ผ๋ฉฐ, TLM(Transaction-Level Modeling) ์ํคํ ์ฒ์ SimX ์๋ฎฌ๋ ์ดํฐ ์ง์์ด ์ถ๊ฐ๋์์ต๋๋ค.
- ์นฉ ์ ์กฐ์ฉ ๋ก์ง ํฉ์ฑ์ ์ํ Synopsys ๋ฐ Yosys ํดํท ์ง์์ด ์ถ๊ฐ๋์์ผ๋ฉฐ, ASAP7(7nm), SAED14(14nm) ๋ฐ NanGate(15nm) ํ์ค ์์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ฌ์ฉ๋ ์ง์๋ฉ๋๋ค.
- ์ฐธ์กฐ ํด์ฒด์ธ์ด LLVM 20 ๋ฐ POCL 7.0์ผ๋ก ์ ๋ฐ์ดํธ๋์์ต๋๋ค.
์ถ์ฒ : opennet.ru
