AMD๋Š” Spectre-STL ๊ณต๊ฒฉ์— ๋Œ€ํ•œ AMD Zen 3 CPU์˜ ์ž ์žฌ์ ์ธ ์ทจ์•ฝ์„ฑ์„ ํ™•์ธํ–ˆ์Šต๋‹ˆ๋‹ค.

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

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€