Java๋ก ์ฝ๋๋ฅผ ์์ฑํ๊ธฐ ์ํด C++ ํ๋ก๊ทธ๋๋จธ๊ฐ ํ์ํ์ง ์์ ๊ฒ์ฒ๋ผ FPGA์ฉ์ผ๋ก ํ๋ก๊ทธ๋๋ฐํ๊ธฐ ์ํด ์นฉ ๋์์ด๋๊ฐ ๋ ํ์๋ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ๋ ๊ฒฝ์ฐ ๋ชจ๋ ์ ์ฉํ ๊ฒ์
๋๋ค.
Java์ FPGA ๊ธฐ์ ์ ๋ชจ๋ ์์ฉํํ๋ ค๋ ๋ชฉํ๋ ํ์์ ์ฃผ์ฅ์ ๋ฐ๋ฐํ๋ ๊ฒ์ ๋๋ค. FPGA์ ๋ํ ํฌ์์ - ํ๋ก๊ทธ๋๋ฐ ๊ฐ๋ฅํ ๋ ผ๋ฆฌ ์ฅ์น๊ฐ ๋ฐ๋ช ๋ ์ดํ ์ง๋ 35๋ ๋์ ์ฌ๋ฐ๋ฅธ ์ถ์ํ ๋ ์ด์ด์ ๋๊ตฌ ์ธํธ๋ฅผ ์ฌ์ฉํ์ฌ CPU, DSP, GPU ๋๋ ๊ธฐํ ํํ์ ๋ง์ถคํ ASIC ๋์ FPGA์ ๋ํ ์๊ณ ๋ฆฌ์ฆ ๋ฐ ๋ฐ์ดํฐ ํ๋ฆ์ ์์ฑํ๋ ๊ฒ์ด ๊ฐ๋ฅํด์ก์ต๋๋ค. ์ ์ ์ผ๋ฐํ๋๊ณ ์ฌ์์ง๊ณ ์์ต๋๋ค.
CPU๊ฐ ๋ ์ด์ ๋ง์ ์์
์ ์ํํ๋ ๋ฐ์ดํฐ ์ผํฐ์ ์ ์ผํ ์ปดํจํ
๋ชจ๋๋ก ๋จ์ ์ ์๊ฒ ๋์์ ๋(๋ค์ํ ์ด์ ๋ก) FPGA๊ฐ ํจ์จ์ฑ์ ๋ฌ์ฑํ๊ณ ์๋, ์งง์ ๋๊ธฐ ์๊ฐ, ๋คํธ์ํน ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ค๋ ์ฌ์ค์์ ์ด๋ฌํ ์์ฑ์ ๋๋ผ์ด ์์์ฑ์ด ๋ถ๋ช
ํฉ๋๋ค. ๋ฉ๋ชจ๋ฆฌ - ๊ฑฐ์ ๋ณธ๊ฒฉ์ ์ธ ์ปดํจํ
์์คํ
์ธ ์ต์ FPGA SoC์ ์ด๊ธฐ์ข
์ปดํจํ
๊ธฐ๋ฅ์
๋๋ค. ๊ทธ๋ฌ๋ FPGA๋ ํ์ด๋ธ๋ฆฌ๋ ์์คํ
์ ๋ค๋ฅธ ์ฅ์น์๋ ์ฑ๊ณต์ ์ผ๋ก ๊ฒฐํฉ๋์์ผ๋ฉฐ, ์ฐ๋ฆฌ ์๊ฒฌ์ผ๋ก๋ FPGA๊ฐ ์ปดํจํ
๊ณ์ธต ๊ตฌ์กฐ์์ ์ฌ๋ฐ๋ฅธ ์์น๋ฅผ ์ฐพ๊ธฐ ์์ํ๋ ๋จ๊ณ์
๋๋ค.
์ด๊ฒ์ด ๋ฐ๋ก ์ฐ๋ฆฌ๊ฐ 22์ XNUMX์ผ ์ฐํธ์ธ์์ The Next FPGA Platform ์ปจํผ๋ฐ์ค๋ฅผ ๊ฐ์ตํ ์ด์ ์
๋๋ค. ๋น์ฐํ ์ ์ธ๊ณ ์ฃผ์ FPGA ๊ณต๊ธ์
์ฒด ์ค ํ๋์ด์ ์ด ๋ถ์ผ์ ์ ๊ตฌ์๋ Xilinx์
๋๋ค. Xilinx์ ์์ ๋ถ์ฌ์ฅ ๊ฒธ CTO์ธ Ivo Bolsens๋ ์ปจํผ๋ฐ์ค์์ ์ฐ์ค์ ํ๋ฉฐ ์ค๋ Xilinx๊ฐ ๋ฐ์ดํฐ ์ผํฐ๋ฅผ ์ํ ๋ณ๊ฒฝ ๊ฐ๋ฅํ ์ปดํจํ
์์คํ
์ ๋ง๋๋ ๋ฐ ์ด๋ป๊ฒ ๋์์ ์ฃผ๊ณ ์๋์ง์ ๋ํ ์์ ์ ์๊ฐ์ ๋ฐํ์ต๋๋ค.
์์คํ ์ค๊ณ์์ ํ๋ก๊ทธ๋๋จธ๊ฐ ์ปดํจํ , ์คํ ๋ฆฌ์ง ๋ฐ ๋คํธ์ํน ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๋ค์ํ ์ ํ์ ์ปดํจํฐ ์ฑ๋ฅ์ ๊ฐ์ถ ์ด๊ธฐ์ข ๋ฐ์ดํฐ ์ผํฐ๋ฅผ ๋ง๋ จํ๋ ๋ฐ ๋ง์ ์๊ฐ์ด ๊ฑธ๋ ธ์ต๋๋ค. ๋ค์ํ CMOS ์ฅ์น๋ฅผ ์ฌ์ฉํ์ฌ ๋ฌด์ด์ ๋ฒ์น์ ๋ฐ๋ฅด๋ ๊ฒ์ด ์ ์ ๋ ์ด๋ ค์์ง๊ณ ์๊ธฐ ๋๋ฌธ์ ์ด๋ ํ์ํ ๊ฒ ๊ฐ์ต๋๋ค. ํ์ฌ ์ฐ๋ฆฌ ์ธ์ด๋ ์ฌ์ ํ CPU ์ค์ฌ์ ์ด๋ฉฐ "์ ํ๋ฆฌ์ผ์ด์ ๊ฐ์", ์ฆ CPU ๋จ๋ ์ผ๋ก ์ํํ ์ ์๋ ๊ฒ๋ณด๋ค ๋ ๋์ ํ๋ก๊ทธ๋จ ์คํ์ ์๋ฏธํ๋ ๊ฒ์ ๋ํด ๊ณ์ ์ด์ผ๊ธฐํฉ๋๋ค. ์๊ฐ์ด ์ง๋จ์ ๋ฐ๋ผ ๋ฐ์ดํฐ ์ผํฐ๋ ๋ชจ๋ ๊ฒ์ ํ๋๋ก ๋ฌถ๋ ์ปดํจํ ์ฑ๋ฅ, ๋ฐ์ดํฐ ์คํ ๋ฆฌ์ง ๋ฐ ํ๋กํ ์ฝ์ ์งํฉ์ฒด๊ฐ ๋ ๊ฒ์ด๋ฉฐ ์ฐ๋ฆฌ๋ "์ปดํจํ " ๋ฐ "์ ํ๋ฆฌ์ผ์ด์ "๊ณผ ๊ฐ์ ์ฉ์ด๋ก ๋ค์ ๋์์ฌ ๊ฒ์ ๋๋ค. ํ์ด๋ธ๋ฆฌ๋ ์ปดํจํ ์ ๋ฐ์คํฌํ์ด๋ ๊ฐ์ ๋จธ์ ์์ ์คํ๋๋ ์ค๋๋ ์ ํด๋ผ์ฐ๋ ์๋น์ค๋งํผ ์ผ๋ฐํ๋ ๊ฒ์ด๋ฉฐ ์ด๋ ์์ ์์๋ ๋จ์ํ "์ปดํจํ "์ด๋ผ๋ ๋จ์ด๋ฅผ ์ฌ์ฉํ์ฌ ์๋ ๋ฐฉ์์ ์ค๋ช ํ๊ฒ ๋ ๊ฒ์ ๋๋ค. ์ธ์ ๊ฐ๋ FPGA๊ฐ ์ด ์๋๋ฅผ ์ฌ๋ ๋ฐ ๋์์ด ๋ ๊ฐ๋ฅ์ฑ์ด ํฌ๋ฉฐ ์ด๋ฅผ ๋ค์ ๋ฐ์ดํฐ ์ฒ๋ฆฌ๋ผ๊ณ ๋ถ๋ฅด๊ฒ ๋ ๊ฒ์ ๋๋ค.
๋ฐ์ดํฐ ์ผํฐ์ FPGA๋ฅผ ์ฑํํ๋ ค๋ฉด ์ฌ๊ณ ๋ฐฉ์์ ๋ณํ๊ฐ ํ์ํฉ๋๋ค. "์ค๋๋ ์ ์ ํ๋ฆฌ์ผ์ด์ ์๋๋ฅผ ๋์ด๋ ๋ฐฉ๋ฒ์ ์๊ฐํ ๋ ์คํ ๋ฐฉ๋ฒ, ์ฌ์ฉ๋๋ ๋ฆฌ์์ค, ์๊ฐ์ด ์๋น๋๋ ์์น์ ๋ํ ๊ธฐ๋ณธ ์ฌํญ์ ์์์ผ ํฉ๋๋ค."๋ผ๊ณ Bolsens๋ ์ค๋ช ํฉ๋๋ค. โ ํด๊ฒฐํ๋ ค๋ ์ผ๋ฐ์ ์ธ ๋ฌธ์ ๋ฅผ ์ฐ๊ตฌํด์ผ ํฉ๋๋ค. ์ค๋๋ ๋ฐ์ดํฐ ์ผํฐ์์ ์คํ๋๋ ๋ง์ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ง์ ์์ ๋ฆฌ์์ค๋ฅผ ์๋นํ๋๋ก ํ์ฅ๋ฉ๋๋ค. ์๋ฅผ ๋ค์ด, ์์ฒญ๋ ์์ ์ปดํจํ ๋ ธ๋๋ฅผ ์ฌ์ฉํ๋ ๊ธฐ๊ณ ํ์ต์ ์๊ฐํด ๋ณด์ญ์์ค. ํ์ง๋ง ๊ฐ์์ ๊ดํด ์ด์ผ๊ธฐํ ๋๋ ์ปดํจํ ์๋ ํฅ์๋ฟ๋ง ์๋๋ผ ์ธํ๋ผ ์๋ ํฅ์๋ ๊ณ ๋ คํด์ผ ํฉ๋๋ค.โ
์๋ฅผ ๋ค์ด Bolsens๊ฐ ์ค์ ๋ก ์ฐ๊ตฌํ ์ผ์ข ์ ๊ธฐ๊ณ ํ์ต ์์ ์์๋ ๋ถ์ฐ๋ ์ปดํจํ ์ฑ๋ฅ ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ๋ ๋ฐ ์๊ฐ์ ์ฝ 50%๊ฐ ์์๋๊ณ ๋๋จธ์ง ์ ๋ฐ๋ง ๊ณ์ฐ ์์ฒด์ ์์๋ฉ๋๋ค.
โ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ณ์ฐ ๋ฐ ํต์ ์ธก๋ฉด์ด ๋ชจ๋ ์ต์ ํ๋๋๋ก ๋ณด์ฅํ ์ ์๊ธฐ ๋๋ฌธ์ FPGA๊ฐ ๋์์ด ๋ ์ ์๋ค๊ณ ์๊ฐํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ฐ๋ฆฌ๋ ์ด๋ฅผ ์ ๋ฐ์ ์ธ ์ธํ๋ผ ์์ค๊ณผ ์นฉ ์์ค์์ ์ํํ ์ ์์ต๋๋ค. ์ด๋ ํน์ ์ ํ๋ฆฌ์ผ์ด์ ์๊ตฌ ์ฌํญ์ ๋ง๋ ํต์ ๋คํธ์ํฌ๋ฅผ ์์ฑํ ์ ์๋ค๋ ์ ์์ FPGA์ ๊ฐ์ฅ ํฐ ์ฅ์ ์ค ํ๋์ ๋๋ค. AI ์ํฌ๋ก๋์ ์ผ๋ฐ์ ์ธ ๋ฐ์ดํฐ ์ด๋ ํจํด์ ๋ณด๋ฉด ๋ณต์กํ ์ค์์น ๊ธฐ๋ฐ ์ํคํ ์ฒ๊ฐ ํ์ํ์ง ์์ต๋๋ค. ๋๊ท๋ชจ ๋ฐ์ดํฐ ํ๋ฆ์ผ๋ก ๋คํธ์ํฌ๋ฅผ ๊ตฌ์ถํ ์ ์์ต๋๋ค. ์ ๊ฒฝ๋ง ํ๋ จ ์์ ์๋ ๋์ผํ๊ฒ ์ ์ฉ๋ฉ๋๋ค. ํน์ ์์ ์ ๋ง๊ฒ ์กฐ์ ๋๋ ํจํท ํฌ๊ธฐ๋ก ๋ฉ์ ๋คํธ์ํฌ๋ฅผ ๊ตฌ์ถํ ์ ์์ต๋๋ค. FPGA๋ฅผ ์ฌ์ฉํ๋ฉด ๋ฐ์ดํฐ ์ ์ก ํ๋กํ ์ฝ๊ณผ ํ๋ก ํ ํด๋ก์ง๋ฅผ ํน์ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ง๊ฒ ๋งค์ฐ ์ ํํ๊ฒ ํ์ฅํ๊ณ ์กฐ์ ํ ์ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ธฐ๊ณ ํ์ต์ ๊ฒฝ์ฐ ๋ฐฐ์ ๋ฐ๋ ๋ถ๋ ์์์ ์ซ์๊ฐ ํ์ํ์ง ์๋ค๋ ๊ฒ๋ ๋ถ๋ช ํ๋ฉฐ ์กฐ์ ๋ ๊ฐ๋ฅํฉ๋๋ค.โ
FPGA์ CPU ๋๋ ๋ง์ถคํ ASIC์ ์ฐจ์ด์ ์ ํ์๋ ๊ณต์ฅ์์ ํ๋ก๊ทธ๋๋ฐ๋๋ฉฐ ๊ทธ ํ์๋ ๊ณ์ฐ๋๋ ๋ฐ์ดํฐ ์ ํ์ด๋ ๊ณ์ฐ๋๋ ์์ ๋๋ ๋ฐ์ดํฐ์ ์ฑ๊ฒฉ์ ๋ํด ๋ ์ด์ ๋ง์์ ๋ฐ๊ฟ ์ ์๋ค๋ ๊ฒ์ ๋๋ค. ์ฅ์น๋ฅผ ํตํด ํ๋ฆ ๋๋ค. FPGA๋ฅผ ์ฌ์ฉํ๋ฉด ์๋ ์กฐ๊ฑด์ด ๋ณ๊ฒฝ๋๋ฉด ๋ง์์ ๋ฐ๊ฟ ์ ์์ต๋๋ค.
๊ณผ๊ฑฐ์๋ FPGA ํ๋ก๊ทธ๋๋ฐ์ด ์์ฌํ ์ฌ๋๋ค์ ์ํ ๊ฒ์ด ์๋์๊ธฐ ๋๋ฌธ์ ์ด๋ฌํ ์ด์ ์ ์ป๊ธฐ ์ํด์๋ ๋๊ฐ๊ฐ ํ์ํ์ต๋๋ค. ํ๋ก๊ทธ๋๋จธ๊ฐ C, C++ ๋๋ Python์ผ๋ก CPU ๋ณ๋ ฌ ์ ํ๋ฆฌ์ผ์ด์ ์ ์์ฑํ๋ ๋ฐ ์ฌ์ฉํ๋ ๋๊ตฌ์ ๋ ์ ํตํฉํ๊ณ ์ผ๋ถ ์์ ์ FPGA์์ ์ ์ฐจ ์๋๋ฅผ ๋์ด๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์์์์ฑํ๊ธฐ ์ํด FPGA ์ปดํ์ผ๋ฌ๋ฅผ ๊ฐ๋ฐฉํด์ผ ํฉ๋๋ค. ์ด๊ฒ์ด ๋ฐ๋ก Vitis ๋จธ์ ๋ฌ๋ ์คํ์ด ์ํํ๋ ์์ ์ผ๋ก, ๊ธฐ์กด AI ๋ชจ๋ธ์ ์คํํ๊ฑฐ๋ ๋น๋์ค ํธ๋์ค์ฝ๋ฉ, ๋น๋์ค ๊ฐ์ฒด ์ธ์, ๋ฐ์ดํฐ ๋ถ์๊ณผ ๊ฐ์ ์์ ์ FPGA ๊ธฐ๋ฅ์ ์ถ๊ฐํ๊ธฐ ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํตํด Caffe ๋ฐ TensorFlow์ ๊ฐ์ ML ํ๋ซํผ์ ์ง์ํฉ๋๋ค. -ํํฐ ๋์๊ด.
์ด ๊ฐ๋ ์ ๋ณ๋ ฌ ์ปดํจํ ์ GPU ๊ฐ์๊ธฐ๋ก ์คํ๋ก๋ํ๋ XNUMX๋ ์ ์ ์์๋ Nvidia์ CUDA ํ๋ก์ ํธ๋ AMD์ ROCm ํดํท, ๋๋ ๋ค๋ฅธ CPU, GPU ๋ฐ FPGA์์ ์คํ๋์ด์ผ ํ๋ Intel์ OneAPI ํ๋ก์ ํธ์ ์ฝ์๊ณผ ํฌ๊ฒ ๋ค๋ฅด์ง ์์ต๋๋ค.
์ ์ผํ ์ง๋ฌธ์ ๋ชจ๋ ์ฌ๋์ด ์์ ์ ์ฌ๋์ ๋ฐ๋ผ ์ผ๋ จ์ ์ปดํจํ ๋ฅ๋ ฅ์ ํ๋ก๊ทธ๋๋ฐํ ์ ์๋๋ก ์ด๋ฌํ ๋ชจ๋ ๋๊ตฌ๊ฐ ์ด๋ป๊ฒ ํจ๊ป ์ฐ๊ฒฐ๋๋์ง์ ๋๋ค. FPGA๋ ์ฌ์ฉ ๊ฐ๋ฅํ CPU๋ณด๋ค ํจ์ฌ ๋ ๋ณต์กํด์ก๊ธฐ ๋๋ฌธ์ ์ด๋ ์ค์ํฉ๋๋ค. ์ด๋ ๊ฐ์ฅ ์ง๋ณด๋ ์ ์กฐ ๊ณต์ ๊ณผ ๊ฐ์ฅ ํ๋์ ์ธ ์นฉ ํจํค์ง ๊ธฐ์ ์ ์ฌ์ฉํ์ฌ ์ ์กฐ๋ฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ฐ๋ฆฌ๋ ๋ ์ด์ ์๊ฐ, ๋, ์๋์ง ๋ฐ ์ง๋ฅ์ ๋ญ๋นํ ์ ์๊ธฐ ๋๋ฌธ์ ๊ทธ๋ค์ ํ์ ์์ฅ์ ์ฐพ์ ๊ฒ์ ๋๋ค. ์ด ๋ชจ๋ ๊ฒ์ ๋๋ฌด ๋น์ผ ์์์ ๋๋ค.
โFPGA๋ ๊ธฐ์ ์ ์ด์ ์ ์ ๊ณตํฉ๋๋ค.โ๋ผ๊ณ Bolsens๋ ๋งํฉ๋๋ค. โ ๊ทธ๋ฆฌ๊ณ ์ด๊ฒ์ ์ ์์ฑ๊ณผ ์ฌ๊ตฌ์ฑ ๊ฐ๋ฅ์ฑ์ ๋ํ ์ผ๋ฐ์ ์ธ ๊ด๊ณ ๊ฐ ์๋๋๋ค. ๊ธฐ๊ณ ํ์ต, ๊ทธ๋ํ ๋ถ์, ๊ณ ์ ๊ฑฐ๋ ๋ฑ ๋ชจ๋ ์ค์ํ ์์ฉ ํ๋ก๊ทธ๋จ์์ ์ฌ์ฉ๋ฉ๋๋ค. - ๋ฐ์ดํฐ ๋ฐฐํฌ ๊ฒฝ๋ก๋ฟ๋ง ์๋๋ผ ๋ฉ๋ชจ๋ฆฌ ์ํคํ
์ฒ, ์ฆ ์นฉ ๋ด์์ ๋ฐ์ดํฐ๊ฐ ์ด๋ํ๋ ๋ฐฉ์๊น์ง ํน์ ์์
์ ์ ์ํ ์ ์๋ ๋ฅ๋ ฅ์ด ์์ต๋๋ค. FPGA์๋ ๋ค๋ฅธ ์ฅ์น๋ณด๋ค ํจ์ฌ ๋ ๋ง์ ๋ฉ๋ชจ๋ฆฌ๊ฐ ๋ด์ฅ๋์ด ์์ต๋๋ค. ๋ํ ์์
์ด ํ๋์ FPGA์ ๋ง์ง ์๋ ๊ฒฝ์ฐ ์ฌ๋ฌ CPU ๋๋ GPU์ ๊ฑธ์ณ ์์
์ ํ์ฅํ ๋ ๊ธฐ๋ค๋ฆฌ๋ ๋จ์ ์ ์ง๋ฉดํ์ง ์๊ณ ์ฌ๋ฌ ์นฉ์ ๊ฑธ์ณ ํ์ฅํ ์ ์๋ค๋ ์ ๋ ๊ณ ๋ คํด์ผ ํฉ๋๋ค."
์ถ์ฒ : habr.com