AMD๋ Zen 3 ์๋ฆฌ์ฆ ํ๋ก์ธ์์ ๊ตฌํ๋ PSF(Predictive Store Forwarding) ์ต์ ํ ๊ธฐ์ ์ ๋ณด์์ ๋ถ์ํ ๋ณด๊ณ ์๋ฅผ ๋ฐํํ์ต๋๋ค. ์ด ์ฐ๊ตฌ๋ 4๋ 2018์์ ํ์ธ๋ Spectre-STL(Spectre-vXNUMX) ๊ณต๊ฒฉ ๋ฐฉ๋ฒ์ ์ ์ฉ ๊ฐ๋ฅ์ฑ์ ์ด๋ก ์ ์ผ๋ก ํ์ธํ์ต๋๋ค. PSF ๊ธฐ์ ์ ์์ผ๋ ์ค์ ๋ก๋ ๊ณต๊ฒฉ์ผ๋ก ์ด์ด์ง ์ ์๋ ์ฝ๋ ํ ํ๋ฆฟ์ด ์์ง ๋ฐ๊ฒฌ๋์ง ์์ ์ ์ฒด์ ์ธ ์ํ์ฑ์ ๋ฏธ๋ฏธํ ๊ฒ์ผ๋ก ํ๊ฐ๋๋ค.
Spectre-v4(Speculative Store Bypass) ๊ณต๊ฒฉ์ ๊ฐ์ ์ฃผ์ ์ง์ ์ ์ฌ์ฉํ์ฌ ๊ต๋๋ก ์ฐ๊ธฐ ๋ฐ ์ฝ๊ธฐ ์์ ์ ์ฒ๋ฆฌํ ๋ ์์ ์ ์ถ์ธก์ ์คํ ๊ฒฐ๊ณผ๋ฅผ ํ๊ธฐํ ํ ํ๋ก์ธ์ ์บ์์ ์ ์ฐฉ๋ ๋ฐ์ดํฐ๋ฅผ ๋ณต์ํ๋ ๋ฐฉ์์ ๊ธฐ๋ฐ์ผ๋ก ํ๋ค๋ ์ ์ ์๊ธฐํด ๋ณด๊ฒ ์ต๋๋ค. ์ฝ๊ธฐ ์์ ์ด ์ฐ๊ธฐ ์์ ๋ค์ ์ค๋ ๊ฒฝ์ฐ(์: mov [rbx + rcx], 0x0; mov rax, [rdx + rsi]) ์ ์ฌํ ์์ ์ด ์ํ๋์ด ์ฝ๊ธฐ ์ฃผ์์ ์คํ์ ์ด ์ด๋ฏธ ์๋ ค์ ธ ์์ ์ ์์ต๋๋ค(์ฝ๊ธฐ ์์ ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค). ํจ์ฌ ๋ ์์ฃผ ์ํ๋๊ณ ์บ์์์ ์ฝ๊ธฐ๊ฐ ์ํ๋ ์ ์์) ํ๋ก์ธ์๋ ์ฐ๊ธฐ์ ๊ฐ์ ์คํ์ ์ด ๊ณ์ฐ๋ ๋๊น์ง ๊ธฐ๋ค๋ฆฌ์ง ์๊ณ ์ฐ๊ธฐ ์ ์ ์ถ์ธก์ ์ผ๋ก ์ฝ๊ธฐ๋ฅผ ์ํํ ์ ์์ต๋๋ค.
์ด ๊ธฐ๋ฅ์ ์ฌ์ฉํ๋ฉด ์ ์ฅ ์์ ์ด ์์ง ์๋ฃ๋์ง ์์ ๋์ ์ฝ๊ธฐ ๋ช ๋ น์ด ์ผ๋ถ ์ฃผ์์ ์ด์ ๊ฐ์ ์ก์ธ์คํ ์ ์์ต๋๋ค. ์์ธก ์ค๋ฅ๊ฐ ์๋ ๊ฒฝ์ฐ ์คํจํ ์ถ์ธก ์์ ์ ํ๊ธฐ๋์ง๋ง ํด๋น ์คํ์ ํ์ ์ ํ๋ก์ธ์ ์บ์์ ๋จ์ ์์ผ๋ฉฐ ์ก์ธ์ค ๋ณ๊ฒฝ ๋ถ์์ ๊ธฐ๋ฐ์ผ๋ก ์บ์ ์ฝํ ์ธ ๋ฅผ ๊ฒฐ์ ํ๋ ๋ฐฉ๋ฒ ์ค ํ๋๋ฅผ ํตํด ๊ฒ์ํ ์ ์์ต๋๋ค. ์บ์๋ ๋ฐ์ดํฐ์ ์บ์๋์ง ์์ ๋ฐ์ดํฐ์ ๊ฑธ๋ฆฌ๋ ์๊ฐ.
AMD Zen 3 ํ๋ก์ธ์์ ์ถ๊ฐ๋ PSF๋ ์ฝ๊ธฐ ์์ ๊ณผ ์ฐ๊ธฐ ์์ ๊ฐ์ ๊ด๊ณ๋ฅผ ์์ธกํ์ฌ ์ถ์ธก์ ์ผ๋ก ์ฝ๊ธฐ ์์ ์ ์ํํ๋ STLF(Store-To-Load-Forwarding)๋ฅผ ์ต์ ํํฉ๋๋ค. ํด๋์ STLF๋ฅผ ์ฌ์ฉํ ๋ ํ๋ก์ธ์๋ ๊ฒฐ๊ณผ๊ฐ ์ค์ ๋ก ๋ฉ๋ชจ๋ฆฌ์ ๊ธฐ๋ก๋ ๋๊น์ง ๊ธฐ๋ค๋ฆฌ์ง ์๊ณ ์ด์ "store" ๋ช ๋ น์์ ์ง์ ์ ๋ฌ๋ ๋ฐ์ดํฐ์ ๋ํด "๋ก๋" ์์ ์ ์ํํ์ง๋ง "๋ก๋"์ ์ฌ์ฉ๋ ์ฃผ์๊ฐ ๊ทธ๋ฆฌ๊ณ "store" ๋ช ๋ น์ด ์ผ์นํฉ๋๋ค. PSF ์ต์ ํ๋ ์ฃผ์ ํ์ธ์ ์ถ๋ก ์ ์ผ๋ก ๋ง๋ค๊ณ ๋จ์ผ ์ฃผ์๋ฅผ ์กฐ์ํ๋ ์ ์ฅ/๋ก๋ ์์ด ์ด์ ์ ์คํ๋ ๊ฒฝ์ฐ ์ฃผ์ ์ ๋ณด๊ฐ ๊ณ์ฐ๋๊ธฐ ์ ์ "๋ก๋" ์์ ์ ์ํํฉ๋๋ค. ์์ธก์ด ์คํจํ๋ฉด ์ํ๋ ๋กค๋ฐฑ๋์ง๋ง ๋ฐ์ดํฐ๋ ์บ์์ ๋จ์ ์์ต๋๋ค.
PSF์ ๋ํ ๊ณต๊ฒฉ์ ํ ์์ค์ ๊ถํ ํ๋ ์์ํฌ ๋ด์์๋ง ๊ฐ๋ฅํ๋ฉฐ ํ์ฌ ํ๋ก์ธ์ค ์ปจํ ์คํธ์๋ง ์ ์ฉ๋๋ฉฐ ์ฃผ์ ๊ณต๊ฐ ๊ฒฉ๋ฆฌ ๋ฐฉ๋ฒ์ด๋ ํ๋์จ์ด ์๋๋ฐ์ค ๋ฉ์ปค๋์ฆ์ ์ํด ์ฐจ๋จ๋ฉ๋๋ค. ์ด ๊ฒฝ์ฐ ํ๋ก์ธ์ค์ ์ํํธ์จ์ด ์๋๋ฐ์ฑ ๋ฐฉ๋ฒ์ด ์ ์ฌ์ ์ผ๋ก ๋ฌธ์ ์ ์ํฅ์ ๋ฐ์ ์ ์์ต๋๋ค. ์ด ๊ณต๊ฒฉ์ ๋จ์ผ ํ๋ก์ธ์ค ๋ด์์ ํ์ฌ ์ฝ๋๋ฅผ ์คํํ๋ ๋ธ๋ผ์ฐ์ , ์ฝ๋ ์คํ ๊ฐ์ ๋จธ์ , JIT์ ๊ฐ์ ์์คํ ์ ์ํ์ด ๋ฉ๋๋ค. ์ด ๊ณต๊ฒฉ์ ํตํด ์ ๋ขฐํ ์ ์๋ ์๋๋ฐ์ค ์ฝ๋๊ฐ ๋ค๋ฅธ ํ๋ก์ธ์ค ๋ฐ์ดํฐ์ ์ก์ธ์คํ ์ ์์ต๋๋ค.
AMD๋ PSF๋ฅผ ์์ ํ ๋๋ ์ ํ์ ์ผ๋ก ๋นํ์ฑํํ๋ ์ฌ๋ฌ ๊ฐ์ง ๋ฐฉ๋ฒ์ ์ ๊ณตํ์ง๋ง ๋๋ถ๋ถ์ ์์ฉ ํ๋ก๊ทธ๋จ์ ๋ํ ์ํ์ด ๋ฌด์ํ ์ ์๋ ์์ค์์ ๊ณ ๋ คํ์ฌ ์ด ์ต์ ํ๋ฅผ ๊ธฐ๋ณธ์ ์ผ๋ก ๋นํ์ฑํํ์ง ๋ง ๊ฒ์ ๊ถ์ฅํ์ต๋๋ค. ์ ๋ขฐํ ์ ์๋ ์ฝ๋๋ฅผ ์คํํ๋ ํ๋ก์ธ์ค๋ฅผ ๊ฒฉ๋ฆฌํ๋ ํ๋ก์ธ์ค๋ฅผ ์ ํ์ ์ผ๋ก ๋ณดํธํ๊ธฐ ์ํด ๊ฐ๋ณ ์ค๋ ๋๋ฅผ ํฌํจํ์ฌ "SSBD" ๋ฐ "PSFD" MSR ๋นํธ๋ฅผ ์ค์ ํ์ฌ PSF๋ฅผ ๋นํ์ฑํํ๋ ๊ฒ์ด ์ ์๋ฉ๋๋ค. PSF๋ฅผ ์ผ๊ณ ๋๋ ๋ฐฉ๋ฒ์ ์ ์ดํ๋ โโ"psfd" ๋ฐ "nopsfd" ๋ช
๋ น์ค ์ต์
์ ๊ตฌํํ์ฌ Linux ์ปค๋์ฉ ํจ์น๊ฐ ์ค๋น๋์์ต๋๋ค.
์ถ์ฒ : opennet.ru