๋ถ๋ฅ:์ค์์ฒ๋ฆฌ์ฅ์น
์ด ๋ฌธ์์ ์๋ณธ์ ์ธ๋ถ ์ํค์์ ๊ฐ์ ธ์์ต๋๋ค.
AVX์์ ๋์ด์ด
Advanced Vector eXtensions.
1. ๊ฐ์[ํธ์ง]
2008๋ 4์ ์ธํ ๊ฐ๋ฐ์ ํฌ๋ผ์์ ๋ฐํ๋ x86 SIMD ๋ช ๋ น์ด ์ธํธ๋ก SSE ๋ช ๋ น์ด ์ธํธ ์๋ฆฌ์ฆ์ ํ์์์ด๋ค.
2011๋ ์ ์ถ์ํ ์ธํ ์๋๋ธ๋ฆฟ์ง ๋ง์ดํฌ๋ก์ํคํ ์ฒ์์ ์ต์ด๋ก ์ง์ํ๋ค.
2. ํน์ง[ํธ์ง]
MMX์์ SSE๋ก ๋์ด๊ฐ๋ ์๊ธฐ์์ ์ต๋ 4๋ฐฐ์ ์ด๋ฅด๋ ์ฑ๋ฅ ํฅ์ํญ์ ๊ธฐ๋กํ๋ ๊ฒ ์ฒ๋ผ, AVX์ ์ง์์ ์ต๋ 2.5๋ฐฐ, AVX-512์์๋ 7๋ฐฐ๊ฐ ๋๋ ํฐ ์ฑ๋ฅ ํฅ์ํญ์ ๊ธฐ๋กํ๋ค.
์ฑ๋ฅ ํฅ์์ ๋ํ ์์ธ ์ค๋ช
์๋๋ธ๋ฆฟ์ง๊ฐ ์์ฒญ๋ ์ธ๊ธฐ๋ฅผ ๋ ์ ์์๋ ๋น๊ฒฐ ์ค์ ํ๋์ด๊ธฐ๋ ํ๋ค.
๋ฐ๋ฉด์ ํํฐ์, ์ ๋ฌ๋ก ์๋ฆฌ์ฆ์์๋ ๋ณดํต ์ง์ํ์ง ์์ผ๋ฉฐ, ์๋๋ธ๋ฆฟ์ง ์ธ๋์ ๋ค์ด์์ผ SSE4.x๋ฅผ ์ง์ํ๊ฒ ๋์๋ค.
์ ํต์ ์ผ๋ก ์ธํ ์ด AMD๋ณด๋ค ๋น ๋ฅด๊ฒ ์ ์ฉ์ค์ด๋ค.
์ด ๋ช ๋ น์ด๋ฅผ ํ์ฑํํ๋ฉด[1] ์์ฒญ๋ ๋ถํ๊ฐ ๊ฑธ๋ ค ์ด๋ง์ด๋งํ ๋ฐ์ด์ ๋ณผ ์ ์๋ค. ํ์ง๋ง ๋ฌดํฑ๋๊ณ ๊บผ๋ฒ๋ฆฌ๋ฉด, ํด๋น ๋ช ๋ น์ด๋ฅผ ์ง์ํ๋ SW[2]์์ ์ฑ๋ฅ์ด ๋ช% ์์ค์ด ์๋๋ผ ์๋ฐฐ๋ ๋จ์ด์ง๊ธฐ ๋๋ฌธ์, ์ฑ๋ฅ์ ์ํด ์ค๋ฒํด๋ญํ๋ ์ฌ๋๋ค์ ํจ๋ถ๋ก ๋ชป ๋๋ค. ํ์ง๋ง ์ฑ๋ฅ์ด ์๋๋ผ ๋จ์ํ ๋์ ํด๋ญ๋ง์ ์ํ๋ ๋ณํ ์ค๋ฒํด๋ญ์ปค๋ค์ ๋ฐ๋์ ๋๋ ๋ช ๋ น์ ์ค ํ๋์ด๋ค.[3]
์ฑ๋ฅ ํฅ์์ด ์ปค ํ๋๋ผ(์ด์ ์ฒด์ ) 32 ๋ถํฐ๋ ํ์ ์ต์ ์ด๋ผ ์ผ๋ฐ ์ฌ์ฉ์๋ ์ฑ๋ฅ์ ๋ ๋์ ํจ๋ถ๋ก ๋๋ฉด ์๋๋ค. ๋ถํ ์ด ์๋ ์ ๋ ์๋ค.
2.1. AVX[ํธ์ง]
SIMD ๋ ์ง์คํฐ ํญ์ด 128๋นํธ์์ 256๋นํธ๋ก ์ฆ๊ฐ๋์๊ณ , 2 ํผ์ฐ์ฐ์ ๊ตฌ์กฐ์์ 3 ํผ์ฐ์ฐ์ ๊ตฌ์กฐ๋ก ๋ณ๊ฒฝ[4]๋์๋ค. ๋ค๋ง 3 ํผ์ฐ์ฐ์ ์ฐ์ฐ์ SIMD ๋ช
๋ น์ด์ ํ์ ๋๊ณ , EAX์ ๊ฐ์ ๋ฒ์ฉ ๋ ์ง์คํฐ๋ฅผ ์ง์ํ์ง ์๋๋ค. ๋ SIMD ๋ฉ๋ชจ๋ฆฌ ํผ์ฐ์ฐ์์ ์ ๋ ฌ ์๊ตฌ๋ ์ํ๋์์ผ๋ฉฐ ์๋กญ๊ฒ VEX ์ฝ๋ฉ ๋ฐฉ์์ด ๋์
๋์ด ๋ ๊ฑฐ์ SSE์ AVX์ฝ๋๋ฅผ ํจ๊ป ์ฌ์ฉํ์ฌ๋ ์๋ ์ ํ๋ฅผ ํผํ ์ ์๋ค.
์ด VEX ์ฝ๋๊ฐ ์ ์ฉ๋ ์ด์ ๋ธ๋ฆฌ ๋ช ๋ น์ ์์
์ฐธ๊ณ ๋ก AVX๋ GCC 4.6, ์ธํ ์ปดํ์ผ๋ฌ 11.1, Open64 ์ปดํ์ผ๋ฌ 4.5.1, Free Pascal ์ปดํ์ผ๋ฌ 2.7.1๋ถํฐ ์ง์ํ๋ฉฐ, ์ด์์ฒด์ ๋ Windows 7 SP1, ๋ฆฌ๋ ์ค ์ปค๋ 2.6.30 ์ด์๋ถํฐ ์ง์ํ๋ค.
์ด VEX ์ฝ๋๊ฐ ์ ์ฉ๋ ์ด์ ๋ธ๋ฆฌ ๋ช ๋ น์ ์์
v๋ฅผ ๋ถ์ด๊ฒ ๋๊ณ Mutationํ๋ ๋ ์ง์คํฐ์ ๋ฐ๋ผ AVX-128, AVX-256 ๋ฑ์ผ๋ก ๋๋๋ฉฐ ์๋ฅผ ๋ค์ด XMM๋ง์ ์ง์ํ๋ movdqa๋ vmovdqa๊ฐ ๋๊ณ VEX ๋ฒ์ ์ ๊ฒฝ์ฐ XMM๊ณผ YMM์ ๋ชจ๋ ์ฌ์ฉํ ์ ์๊ณ ์๋ ์ ํ๋ ์ผ์ด๋์ง ์๊ธฐ ๋๋ฌธ์ SSE ์ฝ๋๋ฅผ ๊ทธ๋๋ก ์ปดํ์ผ๋ง ๋ค์ ํ๋ฉด ์๋ ์ ํ ํ๋ํฐ๊ฐ ์๋ค๋ ์ฅ์ ์ด ์๋ค.์ฐธ๊ณ ๋ก AVX๋ GCC 4.6, ์ธํ ์ปดํ์ผ๋ฌ 11.1, Open64 ์ปดํ์ผ๋ฌ 4.5.1, Free Pascal ์ปดํ์ผ๋ฌ 2.7.1๋ถํฐ ์ง์ํ๋ฉฐ, ์ด์์ฒด์ ๋ Windows 7 SP1, ๋ฆฌ๋ ์ค ์ปค๋ 2.6.30 ์ด์๋ถํฐ ์ง์ํ๋ค.
2.2. AVX2[ํธ์ง]
์ธํ
ํ์ค์ฐ ๋ง์ดํฌ๋ก์ํคํ
์ฒ์์ ์ต์ด๋ก ์ง์ํ๋ค.
๋๋ถ๋ถ์ ๋ฒกํฐ ์ ์ SSE์ 256๋นํธ AVX ๋ช ๋ น์ด๊ฐ ํ์ฅ๋์๊ณ , AVX์์ ์ง์ํ์ง ์์๋ ๋ฒ์ฉ ๋ ์ง์คํฐ์์์ 3 ํผ์ฐ์ฐ์ ๋ง์ /๊ณฑ์ ์ฐ์ฐ์ ์ง์ํ๋ฉฐ, FMA3๊ณผ๋ ํธํ๋๋ค. ๋ํ ๋ฒกํฐ ์ฃผ์ ๋ฐฉ์์ ์ง์ํ๊ณ , ๋ฒกํฐ ์์์ ๋น ์ฐ์ ๋ฉ๋ชจ๋ฆฌ ์์น์ ๋ก๋๋ฅผ ์ง์ํ๋ฉฐ ๋ฒกํฐ ์ํํธ๋ ๊ฐ๋ฅํ๊ฒ ๋์๋ค.
๋๋ถ๋ถ์ ๋ฒกํฐ ์ ์ SSE์ 256๋นํธ AVX ๋ช ๋ น์ด๊ฐ ํ์ฅ๋์๊ณ , AVX์์ ์ง์ํ์ง ์์๋ ๋ฒ์ฉ ๋ ์ง์คํฐ์์์ 3 ํผ์ฐ์ฐ์ ๋ง์ /๊ณฑ์ ์ฐ์ฐ์ ์ง์ํ๋ฉฐ, FMA3๊ณผ๋ ํธํ๋๋ค. ๋ํ ๋ฒกํฐ ์ฃผ์ ๋ฐฉ์์ ์ง์ํ๊ณ , ๋ฒกํฐ ์์์ ๋น ์ฐ์ ๋ฉ๋ชจ๋ฆฌ ์์น์ ๋ก๋๋ฅผ ์ง์ํ๋ฉฐ ๋ฒกํฐ ์ํํธ๋ ๊ฐ๋ฅํ๊ฒ ๋์๋ค.
2.3. AVX-512[ํธ์ง]
2016๋
์ ์จ ํ์ด x200 ์๋ฆฌ์ฆ(Knights Landing)์์ ๋จผ์ ๋์
๋์์ผ๋ฉฐ, ์๋ฒ์ฉ CPU๋ 2017๋
์ ์จ ์ค์ผ์ผ๋ฌ๋ธ ์๋ฆฌ์ฆ์ ์ฌ์ฉ๋ ์ค์นด์ด๋ ์ดํฌ-SP, ๋ฐ์คํฌํ CPU ์ค์์ 2017๋
์ธํ
์ฝ์ด X ์๋ฆฌ์ฆ์ ์ฌ์ฉ๋ ์ค์นด์ด๋ ์ดํฌ-X์์ ์ต์ด๋ก ์ง์ํ๋ค. ์์ฝํ์๋ฉด 256-bit ๋จ์์ด๋ AVX2๊ฐ 512-bit๋ก ํ์ฅ๋ ๋ช
๋ น์ด ์ธํธ์ด๋ค. ๊ธฐ์กด AVX์ ๋ฌ๋ฆฌ ํ๋ก์ธ์๋ณ๋ก ์ง์ ๋ช
๋ น์ด๊ฐ ํํธํ๋์ด ์๋ค(...) ์ด๋ ์ชฝ์ด๋ AVX-512F์ AVX-512CD๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์ง์ํ๋ ๊ทธ ์ด์๋ถํด HEDT/์ ์จ ๊ธฐ๋ฐ CPU์ธ๊ฐ ์ ์จ Phi ๊ธฐ๋ฐ CPU์ธ๊ฐ์ ๋ฐ๋ผ์ ํ์ฐํ๊ฒ ๊ฐ๋ฆฌ๊ฒ ๋๋ค.
Prime95 ๊ฐ๋ฐ์ง์ธ GIMPS ์ธก์ ๋ฐ๋ฅด๋ฉด AVX-512 ์ง์์ ๊ฒฝ์ฐ ์ด๋ฅผ ์ ๋๋ก ์ฌ์ฉํ๋ ค๋ฉด DDR4 ๊ท๊ฒฉ ๊ธฐ์ค์ผ๋ก ์ฟผ๋ ์ฑ๋ ๋ฉ๋ชจ๋ฆฌ๊ฐ ํ์ํ๋ค๊ณ ํ๋ค. ๊ตฌ์กฐ์ ์ผ๋ก ๋ฉ๋ชจ๋ฆฌ 4๊ฐ๊ฐ ํ์ํ ๊ฒ์ ์๋์ง๋ง, ํ ์ธ๋ ๋ฉ๋ชจ๋ฆฌ๋ค์ด 512-bit๋ ๋๋ ๊ฑฐ๋ํ ๋ ์ง์คํฐ ํญ์ ๊ฐ์ง ์ฐ์ฐ์ ๋ท๋ฐ์นจํ๋ ค๋ฉด ์ฟผ๋ ์ฑ๋ ์๋น์ ๋ฉ๋ชจ๋ฆฌ ๋์ญํญ ์ ๋๋ ๋์ด์ผ ํ๊ธฐ ๋๋ฌธ.[5] ์ด๋ฌ๋ค๋ณด๋ AVX-512๋ก ์ป์ ์ ์๋ ์ด๋์ ์ ๋๋ก ๋ฝ์ ๋จน์ ์ ์๋ ์์ฉ ํ๋ก๊ทธ๋จ์ ๊ฑฐ์ ์๋ค๊ณ ๋ด๋ ๋๋ค. ์ด๊ธฐ์๋ Trial factoring์ ํํด์๋ง ์ ํ์ ์ผ๋ก ์ฌ์ฉ๋์์ง๋ง, 2019๋ 4์ 23์ผ์ ๋ฐํ๋ 29.8 ๋ฒ์ ๋ถํฐ ์ ์์ผ๋ก ์ฌ์ฉ ๊ฐ๋ฅํด์ก๋ค. ๋ฆฐํฉ๋ AVX-512 ์์ฒด๋ ๋ช ๋ ์ ๋ถํฐ ์ง์ํด์์ง๋ง ์ ๋๋ก ์ง์ํ๋ ๊ฑด ๊ทนํ ์ต๊ทผ์ ์ผ์ด๊ธฐ ๋๋ฌธ.
256-bit ํญ์ ์ง๋ ๊ธฐ์กด์ AVX๋ ์ฒ์ ๋ฑ์ฅํ ๋น์์๋ ๊ตฌ์ธ๋ SSE ๊ณ์ด์ด๋ MMX์ ๋นํด ์์ฒญ๋ ๋ฐ์ด๊ณผ ๋ถํ๋ก ์ธํด ๋ง์ ์ค๋ฒํด๋ฌ์ปค๋ค์ ์ข์ ์์ผฐ์ง๋ง, AVX-512๋ ๊ทธ๋ณด๋ค ๋๋์ฑ ์ฌ๊ฐํ ์์ค์ด๋ผ FM ์์ค์ ์ค๋ฒํด๋ญ ์์ ํ๋ฅผ ๊ณ ์ํ๋ ๋งค๋์ ์ ์ ๋ค๋ง์ ๋ ํ์์ ์ผ๋ก ๋ง๋ค ์ ๋๋ก ์ฌ๊ฐํ ๋ถํ๋ฅผ ์๋ํ๋ค. Windows์ ์์ ๊ด๋ฆฌ์๋ ๋ชจ๋ํฐ๋ง ํ๋ก๊ทธ๋จ์์ CPU ์ด์ฉ๋ฅ ์ด 100%๋ก ๊ฐ๋๋ผ๋ ์ค์ ์๋น์ ๋ ฅ๊ณผ ์จ๋ ๋ฐ ๋ฐ์ด๋์์ ์ฐจ์ด๊ฐ ๋ํ๋ ๋งํผ ํ์กด ์ต๊ณ ์ ๋ถํ ๊ฐ๋๋ฅผ ์ง๋๋ ๋ช ๋ น์ด ์ ์ด๋ผ๊ณ ๋ด๋ ๊ณผ์ธ์ด ์๋๋ค! ๋ฌผ๋ก ๊ทธ์ ๋น๋กํด์ ์ฑ๋ฅ๋ ํฌ๊ฒ ์ค๋ฅด์ง๋ง, ์ด๋๊น์ง๋ ์ ๋๋ก ์ง์์ด ๋๋ค๋ ์ ์ ํ์์๋ ๊ทธ๋ฐ ๊ฒ์ด๋.
์ด๋ฌํ ๋ฌธ์ ๋๋ฌธ์ ์ผ๋ถ ์ปดํ์ผ๋ฌ๋ ํ๋ก๊ทธ๋๋จธ๊ฐ ์ง์ ์ด์ ๋ธ๋ฆฌ๋ ์ธํธ๋ฆฐ์์ผ๋ก AVX512 ๋ช ๋ น์ ์ฌ์ฉํ๊ฑฐ๋ ์๋์ผ๋ก ์ต์ ์ ์ฃผ์ง ์๋ ์ด์ Auto Vectoriziation์ AVX-512์ ZMM์ ์ฌ์ฉํ์ง ์๊ณ AVX์ YMM ์ ์ฌ์ฉํ๋๋ก ์ ํ์ ๊ฑธ์ด๋๋ค.
ํํธํ ๋ฌธ์ ๋ก ๋ฆฌ๋์ค ํ ๋ฐ์ฆ์๊ฒ ์์ ์ป์ด๋จน์๋ค.# ์ฐจ๋ผ๋ฆฌ AVX์ ํ ๋นํ ํธ๋์ง์คํฐ๋ฅผ ๋ชจ์์ AMD์ฒ๋ผ ์ฝ์ด ์๋ ๋๋ฆฌ๋ผ๊ณ ํ๋ค.
SSE ์ต์ ํ๋ฅผ ์ ๋๋ก ํด ๋ณธ ์ฌ๋์ด๋ผ๋ฉด ์๊ฒ ์ง๋ง, SSE ๋ SSE, SSE2, SSE3, Supplement SSE3, SSE4.1, SSE4.2 ์ด๋ ๊ฒ ์กฐ๊ธ์ฉ ์กฐ๊ธ์ฉ ๋ช ๋ น์ด๋ฅผ ์ถ๊ฐํ๊ธฐ ๋๋ฌธ์, ๋ค์ํ ํ๋ซํผ์ ๋์ํ๋ SSE ์ต์ ํ ๊ตฌํ์ ๋ง๋ค๋ ค๋ฉด ์๋ฅผ ๋ค์ด up-to-SSE2 ๊ตฌํ, up-to-Supp.SSE3 ๊ตฌํ, up-to-SSE4.2 ๊ตฌํ ์ด๋ ๊ฒ ์ฌ๋ฌ ๊ตฌํ์ ๋ง๋ค์ด๋๊ณ , CPU ๊ฐ ์ง์ํ๋ ๋ช ๋ น์ด์ ์ ์ธ์ํด์ ๊ทธ์ ๋ง๋ ๊ตฌํ์ ํธ์ถํ๋๋ก ํด์ผํ๋ค. ์๋๋ฉด ์ต์ ๋ช ๋ น์ด์ ์ด ์ฃผ๋ ์ด์ ์ ํฌ๊ธฐํ๋ ๋์ ๊ฐ์ฅ ๋๋ฆฌ ์ง์๋๋ ์ชฝ์ ์ด์ ์ ๋ง์ถ์ด up-to-SSE2 ํน์ up-to-Supp.SSE3 ๊ตฌํ ํ๋๋ง ๋ง๋ค๋๊ฐ. ๋ฌผ๋ก ์๊ฐ์ด ํ์ฐธ ํ๋ฅธ ์์ฆ์์ผ ์ ์ ๋ ฅ Intel N ์๋ฆฌ์ฆ CPU ๋ SSE4.2 ๊น์ง ๋ค ์ง์ํ๋๊น ๋ฒ๊ฑฐ๋ก์์ด ๋ง์ด ์ฌ๋ผ์ก์ง๋ง, ARM NEON ์ด ๊ทธ๋ฅ ARM NEON ๋ช ๋ น์ด ์ ํ๋๋ก ๋๋๋ ๊ฒ์ ๋นํ๋ฉด Intel SSE ์ต์ ํ๋ ์์ฒญ๋๊ฒ ๋ฒ๊ฑฐ๋ก์ ํ๋ก๊ทธ๋๋จธ์ ์์ฑ์ ์ด ์ ๋ฐ์ ์์๋ค.[6][7] ๋ฐ๋ผ์ SSE ๋ค์์ผ๋ก ๋์ ํ AVX ์์๋ ๋ช ๋ น์ด์ ์ AVX, AVX2 ๋ก ์ชผ๊ฐ๋์ ๊ฒ์ ๋๊ณ ์์ง Intel ์ ์ ์ ๋ชป์ฐจ๋ ธ๋ค๊ณ ์๋จน์ ๋ง ํ๋ฐ, ํ ์ ๋ ๋ AVX512 ์์๋ ๋ช ๋ น์ด์ ์ ์ฌ๋ฌ ๊ฐ๋ก ์ชผ๊ฐ๋์ ๊ฒ๋ ๋ชจ์๋ผ ์ต์ CPU ๊ฐ ๋ ๋ง์ ๋ช ๋ น์ด์ ์ ํฌ๊ด์ ์ผ๋ก ์ง์ํ๋ ๊ฒ๋ ์๋๊ณ ๋ผ์ธ์ ๋ณ๋ก ๊ฐ๊ฐ ๋ค๋ฅธ ์ ์ ์ง์ํ๊ฒ ๋ง๋ค์ด๋จ์ผ๋ ์์ฒญ๋ ์์ ์ฒ๋จน๋ ์ ๋ฐ์.
์๋์ AVX-512 ํ๋กํ์ผ ๋ฌธ๋จ์์ ํ์ธ ํ ์ ์๋ฏ์ด, AVX์์ ๊ฐ๋ฅํ ๋ฒกํฐ ์ฐ์ฐ๋ค์ AVX-512์์ ์ถ๊ฐ๋ ๊ธฐ๋ฅ๋ค๋ ์๊ธด ํ์ง๋ง F, CD, ER, PF๋ก ์ฃ๋ค ์ชผ๊ฐ๋๋ค.
๋ง๋ง๋ก GPU ๋บจ์น ์ ๋์ ๋ฏธ์น ์ฑ๋ฅ ํฅ์์ด ์๋ค๋ฉด ํ๋ก๊ทธ๋๋จธ๋ฅผ ๊ฐ์๋ฃ์ด์๋ผ๋ AVX512 ์ต์ ํ ๊ตฌํ์ ํ๊ฑฐ๋ ์ปดํ์ผ๋ฌ๋ฅผ ๊ณ ๋ํํด์ ์๋์ผ๋ก AVX512 ์ฝ๋๋ฅผ ์์ฑํ๊ฒ ์ง๋ง, AVX ๋๋น ๋ฒกํฐ ๊ธธ์ด๊ฐ ๊ณ ์ 2 ๋ฐฐ ๋์ด๋ ๊ฒ์ ๋ถ๊ณผํ์ง ์๋๊ฐ? ๋ฐ๋ผ์ ์๋ฌด๋ ์ฌ์ฉํ์ง ์์, ๋จ์ง Intel ์ ๋ง์ผํ ์ฉ ๊ธฐ์ ๋ก ์ ๋ฝํ AVX512 ์ ํฌ์ํ ํธ๋์ง์คํฐ๊ฐ ์์ผ๋ฉด ๋ค๋ฅธ๋ฐ ํฌ์ํ๋ผ๋ ์ผ์นจ์ด ๋์ค๋ ๊ฒ์ด๋ค.[8]
Prime95 ๊ฐ๋ฐ์ง์ธ GIMPS ์ธก์ ๋ฐ๋ฅด๋ฉด AVX-512 ์ง์์ ๊ฒฝ์ฐ ์ด๋ฅผ ์ ๋๋ก ์ฌ์ฉํ๋ ค๋ฉด DDR4 ๊ท๊ฒฉ ๊ธฐ์ค์ผ๋ก ์ฟผ๋ ์ฑ๋ ๋ฉ๋ชจ๋ฆฌ๊ฐ ํ์ํ๋ค๊ณ ํ๋ค. ๊ตฌ์กฐ์ ์ผ๋ก ๋ฉ๋ชจ๋ฆฌ 4๊ฐ๊ฐ ํ์ํ ๊ฒ์ ์๋์ง๋ง, ํ ์ธ๋ ๋ฉ๋ชจ๋ฆฌ๋ค์ด 512-bit๋ ๋๋ ๊ฑฐ๋ํ ๋ ์ง์คํฐ ํญ์ ๊ฐ์ง ์ฐ์ฐ์ ๋ท๋ฐ์นจํ๋ ค๋ฉด ์ฟผ๋ ์ฑ๋ ์๋น์ ๋ฉ๋ชจ๋ฆฌ ๋์ญํญ ์ ๋๋ ๋์ด์ผ ํ๊ธฐ ๋๋ฌธ.[5] ์ด๋ฌ๋ค๋ณด๋ AVX-512๋ก ์ป์ ์ ์๋ ์ด๋์ ์ ๋๋ก ๋ฝ์ ๋จน์ ์ ์๋ ์์ฉ ํ๋ก๊ทธ๋จ์ ๊ฑฐ์ ์๋ค๊ณ ๋ด๋ ๋๋ค. ์ด๊ธฐ์๋ Trial factoring์ ํํด์๋ง ์ ํ์ ์ผ๋ก ์ฌ์ฉ๋์์ง๋ง, 2019๋ 4์ 23์ผ์ ๋ฐํ๋ 29.8 ๋ฒ์ ๋ถํฐ ์ ์์ผ๋ก ์ฌ์ฉ ๊ฐ๋ฅํด์ก๋ค. ๋ฆฐํฉ๋ AVX-512 ์์ฒด๋ ๋ช ๋ ์ ๋ถํฐ ์ง์ํด์์ง๋ง ์ ๋๋ก ์ง์ํ๋ ๊ฑด ๊ทนํ ์ต๊ทผ์ ์ผ์ด๊ธฐ ๋๋ฌธ.
256-bit ํญ์ ์ง๋ ๊ธฐ์กด์ AVX๋ ์ฒ์ ๋ฑ์ฅํ ๋น์์๋ ๊ตฌ์ธ๋ SSE ๊ณ์ด์ด๋ MMX์ ๋นํด ์์ฒญ๋ ๋ฐ์ด๊ณผ ๋ถํ๋ก ์ธํด ๋ง์ ์ค๋ฒํด๋ฌ์ปค๋ค์ ์ข์ ์์ผฐ์ง๋ง, AVX-512๋ ๊ทธ๋ณด๋ค ๋๋์ฑ ์ฌ๊ฐํ ์์ค์ด๋ผ FM ์์ค์ ์ค๋ฒํด๋ญ ์์ ํ๋ฅผ ๊ณ ์ํ๋ ๋งค๋์ ์ ์ ๋ค๋ง์ ๋ ํ์์ ์ผ๋ก ๋ง๋ค ์ ๋๋ก ์ฌ๊ฐํ ๋ถํ๋ฅผ ์๋ํ๋ค. Windows์ ์์ ๊ด๋ฆฌ์๋ ๋ชจ๋ํฐ๋ง ํ๋ก๊ทธ๋จ์์ CPU ์ด์ฉ๋ฅ ์ด 100%๋ก ๊ฐ๋๋ผ๋ ์ค์ ์๋น์ ๋ ฅ๊ณผ ์จ๋ ๋ฐ ๋ฐ์ด๋์์ ์ฐจ์ด๊ฐ ๋ํ๋ ๋งํผ ํ์กด ์ต๊ณ ์ ๋ถํ ๊ฐ๋๋ฅผ ์ง๋๋ ๋ช ๋ น์ด ์ ์ด๋ผ๊ณ ๋ด๋ ๊ณผ์ธ์ด ์๋๋ค! ๋ฌผ๋ก ๊ทธ์ ๋น๋กํด์ ์ฑ๋ฅ๋ ํฌ๊ฒ ์ค๋ฅด์ง๋ง, ์ด๋๊น์ง๋ ์ ๋๋ก ์ง์์ด ๋๋ค๋ ์ ์ ํ์์๋ ๊ทธ๋ฐ ๊ฒ์ด๋.
์ด๋ฌํ ๋ฌธ์ ๋๋ฌธ์ ์ผ๋ถ ์ปดํ์ผ๋ฌ๋ ํ๋ก๊ทธ๋๋จธ๊ฐ ์ง์ ์ด์ ๋ธ๋ฆฌ๋ ์ธํธ๋ฆฐ์์ผ๋ก AVX512 ๋ช ๋ น์ ์ฌ์ฉํ๊ฑฐ๋ ์๋์ผ๋ก ์ต์ ์ ์ฃผ์ง ์๋ ์ด์ Auto Vectoriziation์ AVX-512์ ZMM์ ์ฌ์ฉํ์ง ์๊ณ AVX์ YMM ์ ์ฌ์ฉํ๋๋ก ์ ํ์ ๊ฑธ์ด๋๋ค.
ํํธํ ๋ฌธ์ ๋ก ๋ฆฌ๋์ค ํ ๋ฐ์ฆ์๊ฒ ์์ ์ป์ด๋จน์๋ค.# ์ฐจ๋ผ๋ฆฌ AVX์ ํ ๋นํ ํธ๋์ง์คํฐ๋ฅผ ๋ชจ์์ AMD์ฒ๋ผ ์ฝ์ด ์๋ ๋๋ฆฌ๋ผ๊ณ ํ๋ค.
SSE ์ต์ ํ๋ฅผ ์ ๋๋ก ํด ๋ณธ ์ฌ๋์ด๋ผ๋ฉด ์๊ฒ ์ง๋ง, SSE ๋ SSE, SSE2, SSE3, Supplement SSE3, SSE4.1, SSE4.2 ์ด๋ ๊ฒ ์กฐ๊ธ์ฉ ์กฐ๊ธ์ฉ ๋ช ๋ น์ด๋ฅผ ์ถ๊ฐํ๊ธฐ ๋๋ฌธ์, ๋ค์ํ ํ๋ซํผ์ ๋์ํ๋ SSE ์ต์ ํ ๊ตฌํ์ ๋ง๋ค๋ ค๋ฉด ์๋ฅผ ๋ค์ด up-to-SSE2 ๊ตฌํ, up-to-Supp.SSE3 ๊ตฌํ, up-to-SSE4.2 ๊ตฌํ ์ด๋ ๊ฒ ์ฌ๋ฌ ๊ตฌํ์ ๋ง๋ค์ด๋๊ณ , CPU ๊ฐ ์ง์ํ๋ ๋ช ๋ น์ด์ ์ ์ธ์ํด์ ๊ทธ์ ๋ง๋ ๊ตฌํ์ ํธ์ถํ๋๋ก ํด์ผํ๋ค. ์๋๋ฉด ์ต์ ๋ช ๋ น์ด์ ์ด ์ฃผ๋ ์ด์ ์ ํฌ๊ธฐํ๋ ๋์ ๊ฐ์ฅ ๋๋ฆฌ ์ง์๋๋ ์ชฝ์ ์ด์ ์ ๋ง์ถ์ด up-to-SSE2 ํน์ up-to-Supp.SSE3 ๊ตฌํ ํ๋๋ง ๋ง๋ค๋๊ฐ. ๋ฌผ๋ก ์๊ฐ์ด ํ์ฐธ ํ๋ฅธ ์์ฆ์์ผ ์ ์ ๋ ฅ Intel N ์๋ฆฌ์ฆ CPU ๋ SSE4.2 ๊น์ง ๋ค ์ง์ํ๋๊น ๋ฒ๊ฑฐ๋ก์์ด ๋ง์ด ์ฌ๋ผ์ก์ง๋ง, ARM NEON ์ด ๊ทธ๋ฅ ARM NEON ๋ช ๋ น์ด ์ ํ๋๋ก ๋๋๋ ๊ฒ์ ๋นํ๋ฉด Intel SSE ์ต์ ํ๋ ์์ฒญ๋๊ฒ ๋ฒ๊ฑฐ๋ก์ ํ๋ก๊ทธ๋๋จธ์ ์์ฑ์ ์ด ์ ๋ฐ์ ์์๋ค.[6][7] ๋ฐ๋ผ์ SSE ๋ค์์ผ๋ก ๋์ ํ AVX ์์๋ ๋ช ๋ น์ด์ ์ AVX, AVX2 ๋ก ์ชผ๊ฐ๋์ ๊ฒ์ ๋๊ณ ์์ง Intel ์ ์ ์ ๋ชป์ฐจ๋ ธ๋ค๊ณ ์๋จน์ ๋ง ํ๋ฐ, ํ ์ ๋ ๋ AVX512 ์์๋ ๋ช ๋ น์ด์ ์ ์ฌ๋ฌ ๊ฐ๋ก ์ชผ๊ฐ๋์ ๊ฒ๋ ๋ชจ์๋ผ ์ต์ CPU ๊ฐ ๋ ๋ง์ ๋ช ๋ น์ด์ ์ ํฌ๊ด์ ์ผ๋ก ์ง์ํ๋ ๊ฒ๋ ์๋๊ณ ๋ผ์ธ์ ๋ณ๋ก ๊ฐ๊ฐ ๋ค๋ฅธ ์ ์ ์ง์ํ๊ฒ ๋ง๋ค์ด๋จ์ผ๋ ์์ฒญ๋ ์์ ์ฒ๋จน๋ ์ ๋ฐ์.
์๋์ AVX-512 ํ๋กํ์ผ ๋ฌธ๋จ์์ ํ์ธ ํ ์ ์๋ฏ์ด, AVX์์ ๊ฐ๋ฅํ ๋ฒกํฐ ์ฐ์ฐ๋ค์ AVX-512์์ ์ถ๊ฐ๋ ๊ธฐ๋ฅ๋ค๋ ์๊ธด ํ์ง๋ง F, CD, ER, PF๋ก ์ฃ๋ค ์ชผ๊ฐ๋๋ค.
๋ง๋ง๋ก GPU ๋บจ์น ์ ๋์ ๋ฏธ์น ์ฑ๋ฅ ํฅ์์ด ์๋ค๋ฉด ํ๋ก๊ทธ๋๋จธ๋ฅผ ๊ฐ์๋ฃ์ด์๋ผ๋ AVX512 ์ต์ ํ ๊ตฌํ์ ํ๊ฑฐ๋ ์ปดํ์ผ๋ฌ๋ฅผ ๊ณ ๋ํํด์ ์๋์ผ๋ก AVX512 ์ฝ๋๋ฅผ ์์ฑํ๊ฒ ์ง๋ง, AVX ๋๋น ๋ฒกํฐ ๊ธธ์ด๊ฐ ๊ณ ์ 2 ๋ฐฐ ๋์ด๋ ๊ฒ์ ๋ถ๊ณผํ์ง ์๋๊ฐ? ๋ฐ๋ผ์ ์๋ฌด๋ ์ฌ์ฉํ์ง ์์, ๋จ์ง Intel ์ ๋ง์ผํ ์ฉ ๊ธฐ์ ๋ก ์ ๋ฝํ AVX512 ์ ํฌ์ํ ํธ๋์ง์คํฐ๊ฐ ์์ผ๋ฉด ๋ค๋ฅธ๋ฐ ํฌ์ํ๋ผ๋ ์ผ์นจ์ด ๋์ค๋ ๊ฒ์ด๋ค.[8]
2.3.1. ํ๋กํ์ผ[ํธ์ง]
2.3.1.1. F, CD, ER, PF[ํธ์ง]
SSE, AVX์ 512๋นํธ ๋ฒ์ ์ด์ ์ ์จ ํ์ด ๋์ด์ธ ๋๋ฉ๊ณผ Skylake-EP์์ ์ง์ํ๋ค.
๊ฐ๊ฐ Foundation, Conflict Detection, Exponential-Reciprocal & Prefetch ์ ์ฝ์ด๋ก AVX-512๊ฐ ์ฒ์ ๋ฑ์ฅํ๊ณ ๊ฐ์ฅ ๋จผ์ ๋์ ๋ ํ๋กํ์ผ์ด๋ค.
๊ฐ๊ฐ Foundation, Conflict Detection, Exponential-Reciprocal & Prefetch ์ ์ฝ์ด๋ก AVX-512๊ฐ ์ฒ์ ๋ฑ์ฅํ๊ณ ๊ฐ์ฅ ๋จผ์ ๋์ ๋ ํ๋กํ์ผ์ด๋ค.
2.3.1.2. VL, DQ, BW[ํธ์ง]
๊ฐ๊ฐ Vector Length, Doubleword-Quadword & Byte-Word ์ ์ฝ์ด๋ก ์ ์ ๊ด๋ จ ์ฐ์ฐ๋ค๊ณผ 8๋นํธ ๋ถํฐ 64๋นํธ ๋จ์์ ์ ์ ๊ด๋ จ ์ฐ์ฐ๋ค์ด ์ถ๊ฐ๋์ด MMX, SSE2, AVX2์ ์ฐ์ฐ์ ๋ชจ๋ ์ปค๋ฒํ๋ค.
Skylake-X์ Cannon Lake ์ดํ๋ถํฐ ์ง์ํ๋ค.
Skylake-X์ Cannon Lake ์ดํ๋ถํฐ ์ง์ํ๋ค.
2.3.1.3. IFMA52, 4FMAPS, VBMI, VBMI2[ํธ์ง]
Integer Fused Multiply Add์ Vector Byte Manipulation Instruction ์ ์ฝ์๋ก ๊ธฐ์กด FMA์ 512๋นํธ ๋ฒ์ ์ด๋ค.
๋ค๋ง IFMA52์ ๊ฒฝ์ฐ 52๋นํธ์ 3ํญ ์ฐ์ฐ์ด ์ง์๋๊ณ , 4FMAPS์ ๊ฒฝ์ฐ 4ํญ ์ฐ์ฐ์ ์ง์ํ๋ค.
๋ค๋ง IFMA52์ ๊ฒฝ์ฐ 52๋นํธ์ 3ํญ ์ฐ์ฐ์ด ์ง์๋๊ณ , 4FMAPS์ ๊ฒฝ์ฐ 4ํญ ์ฐ์ฐ์ ์ง์ํ๋ค.
2.3.1.4. VPOPCNTDQ[ํธ์ง]
๋นํธ์ ์๋ฅผ ์ธ๋ POPCNT ๋ช
๋ น์ด์ ๋์ผํ๋ 512๋นํธ์์ 32๋นํธ ๋๋ 64๋นํธ ๋จ์๋ก ๋ง์คํฌ ์
ํ์ ํ ๋ช
๋ น์ด๋ก ์ฒ๋ฆฌ๊ฐ ๊ฐ๋ฅํ๋ค.
2.3.1.5. VNNI, 4VNNIW[ํธ์ง]
Vector Neural Network Instruction์ ์ฝ์.
8๋นํธ ๋๋ 16๋นํธ ๋จ์์ ํ์ด๋ฅผ ์ฐ์ฐํ๊ณ 4VNNIW์ ๊ฒฝ์ฐ 4๊ฐ์ ๋ธ๋ญ์ ํ๋ฒ์ ์ฒ๋ฆฌํ ์ ์๋ค.
์ด๋ฆ์์ ์ ์ ์๋ฏ์ด ๋จธ์ ๋ฌ๋์์ ์ฌ์ฉ๋๋ ์ธ๊ณต ์ ๊ฒฝ๋ง ๊ฐ์์ ์ํ ๊ธฐ๋ฅ์ด๊ณ AVX2์ epi8๋จ์ ์ฐ์ฐ์ ์ฌ์ฉํด์ ๊ตฌํํ๋ ๊ฒ ๋ณด๋ค VNNI๋ฅผ ์ฌ์ฉํ๋ฉด ์ค๋ฃจํ์ด ํจ์ฌ ์ฆ๊ฐํ๊ธด ํ์ง๋ง VNNI๋ฅผ ์ง์ํ๋ ์ต๊ณ ์ฑ๋ฅ์ CPU๋ฅผ 2์์ผ์ผ๋ก ๊ตฌํํด๋ ํ๊ฐ์ GPGPU์ฒ๋ฆฌ๋ณด๋ค ๋๋ฆฌ๋ค๋๊ฒ์ด ํจ์ .
8๋นํธ ๋๋ 16๋นํธ ๋จ์์ ํ์ด๋ฅผ ์ฐ์ฐํ๊ณ 4VNNIW์ ๊ฒฝ์ฐ 4๊ฐ์ ๋ธ๋ญ์ ํ๋ฒ์ ์ฒ๋ฆฌํ ์ ์๋ค.
์ด๋ฆ์์ ์ ์ ์๋ฏ์ด ๋จธ์ ๋ฌ๋์์ ์ฌ์ฉ๋๋ ์ธ๊ณต ์ ๊ฒฝ๋ง ๊ฐ์์ ์ํ ๊ธฐ๋ฅ์ด๊ณ AVX2์ epi8๋จ์ ์ฐ์ฐ์ ์ฌ์ฉํด์ ๊ตฌํํ๋ ๊ฒ ๋ณด๋ค VNNI๋ฅผ ์ฌ์ฉํ๋ฉด ์ค๋ฃจํ์ด ํจ์ฌ ์ฆ๊ฐํ๊ธด ํ์ง๋ง VNNI๋ฅผ ์ง์ํ๋ ์ต๊ณ ์ฑ๋ฅ์ CPU๋ฅผ 2์์ผ์ผ๋ก ๊ตฌํํด๋ ํ๊ฐ์ GPGPU์ฒ๋ฆฌ๋ณด๋ค ๋๋ฆฌ๋ค๋๊ฒ์ด ํจ์ .
2.3.1.6. BF16[ํธ์ง]
Bfloat16, ๋๋ Brain Float Point 16 ๋ฅผ ์ฒ๋ฆฌํ๋ ๋ช
๋ น์ด ์ธํธ.
์ค์นผ๋ผ๊ณฑ ์ฐ์ฐ์ ์ง์ํ๊ณ VNNI์ ํจ๊ป ์ฐ์ด๋ฉฐ bfloat16 ์ฐ์ฐ์ ์ํด 32๋นํธ ๋ถ๋์์ซ์ ์ 16๋นํธ ๋ถ๋์์์ ์ผ๋ก ๋ผ์ด๋ฉ ํ๋ ๋ณด์กฐ์ ์ธ ๊ธฐ๋ฅ๋ ์๋ค.
์ค์นผ๋ผ๊ณฑ ์ฐ์ฐ์ ์ง์ํ๊ณ VNNI์ ํจ๊ป ์ฐ์ด๋ฉฐ bfloat16 ์ฐ์ฐ์ ์ํด 32๋นํธ ๋ถ๋์์ซ์ ์ 16๋นํธ ๋ถ๋์์์ ์ผ๋ก ๋ผ์ด๋ฉ ํ๋ ๋ณด์กฐ์ ์ธ ๊ธฐ๋ฅ๋ ์๋ค.
2.3.1.7. BITALG[ํธ์ง]
Bit Algorithm ์ ์ฝ์.
8๋นํธ ๋๋ 16๋นํธ์ ์ธํธ์ POPCNT ๊ณ์ฐ์ด๋ ๋นํธ ๋จ์์ ์ ํ๋ง์ ์ง์ํ๋ค.
8๋นํธ ๋๋ 16๋นํธ์ ์ธํธ์ POPCNT ๊ณ์ฐ์ด๋ ๋นํธ ๋จ์์ ์ ํ๋ง์ ์ง์ํ๋ค.
2.3.1.8. VP2INTERSECT[ํธ์ง]
Vector Pair Intersection์ ์ฝ์
๋ ๋ฒกํฐ๊ฐ ๊ต์งํฉ์ ์ฐ์ฐํ๊ธฐ ์ํด ์ฌ์ฉ๋๋ฉฐ, ๋ง์ฝ ๋ ๋ ์ง์คํฐ๊ฐ ์ค๋ณต๋๋ ์์๋ค์ด ์์ผ๋ฉด ํด๋น๋๋ ๋นํธ๋ง์คํฌ๋ฅผ ๋ฆฌํดํ๋ค.
๋ค๋ง ์์๋ 32๋นํธ ๋๋ 64๋นํธ ์ ์๋ก ์ ํ๋๋ค.
๋ ๋ฒกํฐ๊ฐ ๊ต์งํฉ์ ์ฐ์ฐํ๊ธฐ ์ํด ์ฌ์ฉ๋๋ฉฐ, ๋ง์ฝ ๋ ๋ ์ง์คํฐ๊ฐ ์ค๋ณต๋๋ ์์๋ค์ด ์์ผ๋ฉด ํด๋น๋๋ ๋นํธ๋ง์คํฌ๋ฅผ ๋ฆฌํดํ๋ค.
๋ค๋ง ์์๋ 32๋นํธ ๋๋ 64๋นํธ ์ ์๋ก ์ ํ๋๋ค.
3. ์ง์ ํ๋ก์ธ์[ํธ์ง]
3.1. AVX[ํธ์ง]
์ธํ
AMD
3.2. AVX2[ํธ์ง]
์ธํ
AMD
3.3. AVX-512[ํธ์ง]
์ธํ
- ์ธํ ์ ์จ ํ์ด ๋์ด์ธ ๋๋ฉ, ๋์ด์ธ ๋ฐ
- ์ค์นด์ด๋ ์ดํฌ ๋ง์ดํฌ๋ก์ํคํ ์ฒ - HEDT์ฉ ์ค์นด์ด๋ ์ดํฌ-X, ์๋ฒ์ฉ ์ค์นด์ด๋ ์ดํฌ-SP, ์ผ๋ฐ ๋ชจ๋ฐ์ผ์ฉ
๊ทน์๋๋ง ํ๋ฆฐ์บ๋ ผ๋ ์ดํฌ
4. ๊ด๋ จ ํญ๋ชฉ[ํธ์ง]
[1] ํ๋ผ์ 95, ๋ง์ค๋ฑ
[2] ๊ฒ์, ์ธ์ฝ๋ฉ, ์๋ฎฌ๋ ์ด์
๋ฑ CPU์ ๋ถํ๊ฐ ํฐ SW๋ค
[3] ์ด๋ค์ ์ฑ๋ฅ์ด ์๋๋ผ ๊ณ ํด๋ญ๋ง ์๊ตฌํ๊ธฐ ๋๋ฌธ์ CPU์ ์์จ ์ข์ ์ฝ์ด 1๊ฐ๋ง ์ด๋ฆฌ๊ณ ๋ชจ์กฐ๋ฆฌ ๊บผ๋ฒ๋ฆฌ๊ณ ์ฟจ๋ง์ ์ํด ์ก์ฒด ํฌ๋ฅจ์ ๋ถ๋ ์ด๋ค์ด๋ผ AVX ๊ฐ์๊ฑด ์ฅ์ ๋ฌผ๋ก ์ฌ๊ธด๋ค.
[4] ๊ธฐ์กด์ SSE์์๋ ์ต๋ 'A=A+B' ์ฐ์ฐ๋ฐ์ ๋ถ๊ฐ๋ฅํ์ง๋ง, AVX์์๋ 'A=B+C'๊ฐ ๊ฐ๋ฅํ๋ค. ๋ณ ๊ฒ ์๋ ๊ฒ ๊ฐ์๋ณด์ด๊ฒ ์ง๋ง, A = 10 + 5๋ผ๋ ์ฐ์ฐ์ SSE์์๋ A = 10์ ๋จผ์ ์ํํ๊ณ ๊ทธ ๋ค์์ A = A+ 5๋ก ์ด 2ํ์ ์ฐ์ฐ์ด ๋ค์ด๊ฐ๋ฉฐ, AVX์์๋ A = 10 + 5๋ก ํ๋ฒ์ ์ฐ์ฐํ ์ ์๋ค๋ ๊ฒ์ด๋ค. ์๋นํ ํฐ ์ํฅ์ด ์์ ์๋ฐ์ ์๋ค.
[5] ๊ฐ๋ น ๋ฉ๋ชจ๋ฆฌ์์ ๊ฐ์ ์ฝ์ด์ค๋๋ฐ 1 ์ฌ์ดํด์ด ํ์ํ๋ค๊ณ ํ์ ๋ 2021๋
๊ฐ์ธ์ฉ ์ปดํจํฐ์์ ๋ง์ด ์ฌ์ฉ๋๋ 128๋นํธ์ ๋ฉ๋ชจ๋ฆฌ ๋์ญํญ์ผ๋ก๋ ํ ๋ ์ง์คํฐ๋ฅผ ๋ชจ๋ ์ฑ์ฐ๋๋ฐ๋ง 4์ฌ์ดํด์ด ํ์ํ๊ฒ ๋๋ค. ๋ฌผ๋ก ์ค์ ํ๋ก๊ทธ๋จ๋ค์ด ๋ฌ๋ ํ ๋ ์ง์คํฐ๋ง ์ฝ์ด์ค๋๊ฒ ์๋๋ผ ์ฌ๋ฌ ๊ฐ๋ค์ ๋ฉ๋ชจ๋ฆฌ์์ ์ฝ์ด์ค๊ฒ ๋๊ธฐ ๋๋ฌธ์ ๋ฉ๋ชจ๋ฆฌ ๋์ญํญ์ด ์คํ ์๋์ ์๋นํ ํฐ ์ํฅ์ ์ฃผ๊ฒ ๋๋ค.
[6] ๋จ ์ด๊ฑด ๊ทธ๋ฅ ARM ์ด ํจ์ฌ ์งง์ ์ญ์ฌ๋ฅผ ๊ฐ์ก๊ณ ์ ์ ๋ ฅ์ ์ถ๊ตฌํ๋ ํ๋ก์ธ์์๊ธฐ ๋๋ฌธ์(์ง๊ธ์ ์๋๋ค) ๊ทธ๋ฐ๊ฑฐ์ง ARM ์ด ํน๋ณํ ๋ฌด์ธ๊ฐ๋ฅผ ์ ํ๊ฑด ์๋๋ค. ARM ๋ ์๊ฐ์ด ์ง๋๋ฉด ๊ฒฐ๊ตญ ํํธํ๊ฐ ๋๋์ง ํ์ ํธํ์ ํฌ๊ธฐํ๋์ง ์์ ๊ณ ์ฑ๋ฅ ๋ฒกํฐ ๋ช
๋ น์ด์
์ ๋ ์ถ๊ฐํ์ง ์๋์ง ๊ทธ๋ฐ ๋ฐฉ๋ฒ๋ฐ์ ์๋ค. ๋ฌผ๋ก ๋ค์๋ ์จ์์ง๋ง ์ ์ด์ AVX-512 ๊ฐ ๊น์ด๋ ๊ฑด ๋จ์ง ํํธํ๋๋ฌธ์ด ์๋๋ค.
[7] ARM ๋ VFP ๋ผ๊ณ ํ์ฌ ์ฌ์ค์ ์ฌ์ฅ๋ ๋ฒกํฐ ๋ช
๋ น์ด์
์ด ์๋ค. VFP ๋ ๋ช
๋ น์ด ํ๋๋ก ์ฌ๋ฌ๊ฐ์ floating point register ์ฌ๋ฌ๊ฐ๋ฅผ ๋ฒกํฐ์ฒ๋ผ ๋ฌถ์ด์ ๋์์ฒ๋ฆฌํ๋ ๊ฒ. ํ์ง๋ง 32b floating point register ์ซ์ ์์ฒด์ ๋นก๋นกํ ํ๊ณ๊ฐ ์๊ธฐ ๋๋ฌธ์ ์ ๋๋ก ํ์ฉํ๊ธฐ๋ ํ๋ค๋ ์ฑ๋ฅ ํฅ์๋ ํ๊ณ๊ฐ ์๋ค. ์ฆ ARM ๋ ๋ป์งํ๋ค๊ฐ ๋ป์ง์ ๊นจ๋ซ๊ณ VFP ๋ฅผ ์ฌ์ฅ์ํค๊ณ ๋จ์ผํ๋ 128b NEON ์ ๋ด๋์๊ณ ์ง๊ธ ๊ตณ์ด ์ต์ง๋ก ์ธํ
์ ์ซ์๊ฐ๊ฒ ๋ค๊ณ SSE1/2 ๋ AVX1/2 ์์ ํ๋ ์์ผ๋ก ์ ์ ๋ฒกํฐ ์ฐ์ฐ๊ณผ ์ค์ ๋ฒกํฐ ์ฐ์ฐ์ ๋ถ๋ฆฌํด์ 256b ๋ฒกํฐ ๋ช
๋ น์ด์
์ ์ถ๊ฐํ๊ณ ์์ง๋ ์๊ณ ์๋ค. ๊ทธ์ ๋นํ๋ฉด ์ธํ
์ SSE ์์ ์ง์์ ์ธ ๋ป์ง์ ํด๋๊ณ ๋ ์ด๋ฅผ AVX ์์๋ ์ด์ด๊ฐ์ผ๋ฉฐ AVX512 ์์๋ ์คํ๋ ค ๋ป์ง์ ๊ทน๋ํ์์ผฐ๋ค๋๊ฒ ๋ฌธ์ ๋ค. ์ด๊ฒ์ ๋จ์ํ ARM ๋ณด๋ค ์ญ์ฌ๊ฐ ๊ธธ์ด์ ์ด์ฉ ์ ์๋ค๋๊ฐ ํน์ ํํธํ๋ ๊ฒฐ๊ตญ ๋ถ๊ฐํผํ๋ค๋ ๋
ผ๋ฆฌ๋ก ์ด๋์ณ์ค ์ ์๋ ๋ถ๋ถ์ด ์๋๋ค. ๋ฆฌ๋์ค ํ ๋ฐ์ฆ๊ฐ AVX512 ๋ฅผ ๊น๊ฒ AVX512 ๋๋ฌธ์ ๋ฐ์ด ๋ง์์ ธ์ ์ค๋ฒํด๋ญ ์๋๋ ๊ฒ ๋๋ฌธ์ ๊ทธ๋ฐ ๊ฒ ๊ฐ์๊ฐ?
[8] ๋ค๋ง ์ต๊ทผ 11์ธ๋ ์ฝ๋ธ ์๋ฆฌ์ฆ์ ์ ์ถ ๋ด์ฉ์ ๋ฐ๋ฅด๋ฉด AVX512์ ๊ธฐ์กด 10์ธ๋ ํ๋ก์ธ์๊ฐ ์ฑ๋ฅ ๊ฒฉ์ฐจ๋ 22ํผ์ผํธ ์ ๋์ด๋ ์ด ์ฑ๋ฅ ํฅ์์ด ๊ฒฐ์ฝ ๋ง์๊ฒ ์๋๋ค. C/C++ ์ฝ๋์ SSE ๋ง ์ ์ฉํด๋ ์ต์ 2~3 ๋ฐฐ, 8 bit ์ฒ๋ฆฌ์ผ ๊ฒฝ์ฐ 10 ๋ฐฐ ์ด์ ๋นจ๋ผ์ง๋๊ฒ ๋ณดํต์ด๊ณ , ๋ณธ๊ฒฉ์ ์ผ๋ก GPU ๋ฅผ ์ฐ๋ฉด ์ฑ๋ฅ ํฅ์์ด ๋ชปํด๋ ์์ญ๋ฐฐ์์ ์๋ฐฑ๋ฐฐ๊น์ง ๋๋๊ฒ ๋ณดํต์ด๋ค. ๊ดํ ์์ฆ ์์ฒญ๋ ์ฐ์ฐ๋์ ์ํ๋ ๋ฅ๋ฌ๋ ํธ๋ ์ด๋์ด GPU ๋ฅผ ๊ธฐ๋ณธ์ผ๋ก ์ฐ๋๊ฒ ์๋๋ค. (๊ทธ๊ฒ๋ ํ
์ฌ๋ผ๊ธ ์ด์ GPU ๋ฅผ PC ํ๋์ 4 ๊ฐ ์ด์์ฉ ๊ฝ์์ ์ด๋ค.) 22 ํผ์ผํธ ์ ๋๋ memory access pattern (cache fit) ์กฐ์ ๋ฑ C/C++ ์ฝ๋ ์์ฒด์ ์ต์ ํ๋ง ์ํด๋ ๋์ค๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ ์ ๋์ ๋ถ๊ณผํ๊ณ , ๋ฐ๋ผ์ ๊ณ ์ 22 ํผ์ผํธ ๋๋ฌธ์ ํํธํ๋ AVX512 ์ ๋ชฉ๋งฌ ์ฌ๋์ ์๋ฌด๋ ์๋ค.