์ด ๋ฌธ์„œ์˜ ์›๋ณธ์€ ์™ธ๋ถ€ ์œ„ํ‚ค์—์„œ ๊ฐ€์ ธ์™”์Šต๋‹ˆ๋‹ค.
HSA ์žฌ๋‹จ ํ™ˆํŽ˜์ด์ง€

Heterogeneous System Architecture
์ด๊ธฐ์ข… ์‹œ์Šคํ…œ ์•„ํ‚คํ…์ฒ˜

1. ๊ฐœ์š”2. HSA ์žฌ๋‹จ3. ์—ญ์‚ฌ4. HSA์˜ ๊ฐœ๋…
4.1. hUMA4.2. hQ
5. HSA์˜ ๋ชฉํ‘œ์™€ ํ•œ๊ณ„6. HSA ์ง€์› ํ”„๋กœ๊ทธ๋žจ

1. ๊ฐœ์š”[ํŽธ์ง‘]


HSA(Heterogeneous System Architecture)๋ž€ ์ด๊ธฐ์ข… ์‹œ์Šคํ…œ ์•„ํ‚คํ…์ฒ˜์˜ ์ค„์ž„๋ง์ด๋‹ค.

๋™์ผํ•œ ์„ฑ๊ฒฉ์˜ ์ฝ”์–ด๋ฅผ ๋ชจ์€ ํ”„๋กœ์„ธ์„œ(๋ฉ€ํ‹ฐ์ฝ”์–ด CPU๋‚˜ GPU)๋ฅผ ๊ฐ€๋ฆฌ์ผœ ํ˜ธ๋ชจ์ง€๋‹ˆ์–ด์Šค(Homogeneous)๋ผ๊ณ  ํ•˜๊ณ , ์ด์™€๋Š” ๋ฐ˜๋Œ€๋กœ ์ „ํ˜€ ๋‹ค๋ฅธ ์—ญํ• ์„ ํ•˜๋Š” ์ฝ”์–ด๋ฅผ ํ•˜๋‚˜๋กœ ํ†ตํ•ฉํ•œ ํ”„๋กœ์„ธ์„œ๋ฅผ ๊ฐ€๋ฆฌ์ผœ ํ—คํ…Œ๋กœ์ง€๋‹ˆ์–ด์Šค(Heterogeneous)๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค. ์—ฌ๊ธฐ์„œ ํ˜ธ๋ชจ์ง€๋‹ˆ์–ด์Šค ํ†ตํ•ฉ์ด ๋ฉ€ํ‹ฐ์ฝ”์–ด ํ”„๋กœ์„ธ์„œ์ด๊ณ , ํ—คํ…Œ๋กœ์ง€๋‹ˆ์–ด์Šค ํ†ตํ•ฉ์ด HSA์ด๋‹ค.

HSA๋Š” ํ—คํ…Œ๋กœ์ง€๋‹ˆ์–ด์Šค์ธ CPU์™€ GPU๋ฅผ ํ•˜๋‚˜์˜ ์—ฐ์‚ฐ์ฒด๋กœ ๊ฐ„์ฃผํ•˜๋Š” ์ถ”์ƒ ๊ณ„์ธต์„ ์ƒ์„ฑํ•ด GPU๋ฅผ ์—ฐ์‚ฐ ๋ณด์กฐ์šฉ์œผ๋กœ ์‚ฌ์šฉํ•˜๊ณ , CPU์™€ GPU ์‚ฌ์ด์— ๋ฐ์ดํ„ฐ๊ฐ€ ์˜ค๊ฐˆ ํ•„์š”๋ฅผ ์—†์•ค๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ์ฆ‰ HSA๋ž€ CPU์™€ GPU๋ฅผ ํ•˜๋‚˜์˜ ์นฉ์œผ๋กœ ํ†ตํ•ฉ์‹œํ‚ค๊ณ  ๋‘˜ ์‚ฌ์ด์— ๊ธด๋ฐ€ํ•œ ์—ฐ๊ณ„๋ฅผ ์ถ”๊ตฌํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

์ด๋Š” GPU๊ฐ€ ๋ฐœ์ „ํ•˜๋ฉด์„œ ์ด๋ฅผ ์ƒˆ๋กœ์šด ์—ฐ์‚ฐ ์žฅ์น˜๋กœ ํ™œ์šฉํ•˜๋ ค๋Š” ์‹œ๋„๊ฐ€ ์žˆ์—ˆ๊ณ , ์ด๋กœ๋ถ€ํ„ฐ ๋„์ถœ๋œ ๋ฌธ์ œ์ ๊ณผ ๊ทธ ํ•ด๊ฒฐ์ฑ…์„ ์ฐพ์•„๊ฐ€๋ฉด์„œ ๋งŒ๋“ค์–ด์ง„ ๊ฐœ๋…์ด๋‹ค. ๊ฐ„๋‹จํ•˜๊ฒŒ, GPGPU๋ฅผ ์ง€๊ธˆ๋ณด๋‹ค ๋” ํ™œ์šฉํ•˜๊ธฐ ์‰ฝ๋„๋ก ํ•˜๋Š” ์•„ํ‚คํ…์ฒ˜ ์„ค๊ณ„๋ฒ•์œผ๋กœ ๋ณด๋ฉด ๋œ๋‹ค.

AMD/APU๋Š” ์™ธ์žฅ ๊ทธ๋ž˜ํ”ฝ์นด๋“œ๋ฅผ ์‚ฌ์šฉํ•ด๋„ iGPU๋ฅผ HSA๋กœ ์‚ฌ์šฉํ•ด CPU์˜ ์—ฐ์‚ฐ ์†๋„์—์„œ ๋น„์•ฝ์ ์ธ ํ–ฅ์ƒ์„ ๊ฐ€์ ธ์˜จ๋‹ค.

2. HSA ์žฌ๋‹จ[ํŽธ์ง‘]

http://107.170.238.52/wp-content/uploads/2013/11/banner2_update.png

2012๋…„, AMD์—์„œ ์ด๊ธฐ์ข… ์‹œ์Šคํ…œ ์•„ํ‚คํ…์ฒ˜ ์—ฐ๊ตฌ๋ฅผ ํ•˜๊ธฐ ์œ„ํ•ด์„œ ์„ค๋ฆฝํ•œ ๋น„์˜๋ฆฌ ์žฌ๋‹จ์ด๋‹ค.
ARM ์ง„์˜์„ ๋น„๋กฏํ•˜์—ฌ, ๋ชจ๋ฐ”์ผ ์นฉ์…‹์„ ์ƒ์‚ฐํ•˜๋Š” ํšŒ์‚ฌ๋“ค์ด ๋Œ€๊ฑฐ ๊ฐ€์ž…ํ•ด ์žˆ๋‹ค(์‚ผ์„ฑ์ „์ž๋„ ์—ฌ๊ธฐ์— ์†ํ•ด ์žˆ๋‹ค). ์ด์ฒ˜๋Ÿผ HSA ๊ธฐ์ˆ ์€ ARM ์ง„์˜์—์„œ ํ™˜์˜ ๋ฐ›๋Š”๋‹ค.
์ธํ…”, NVIDIA, IBM์„ ๋น„๋กฏํ•˜์—ฌ ๋…์ž ํ”Œ๋ ›ํผ์œผ๋กœ GPGPU ๋ถ„์•ผ์— ์ง„์ถœ์ค‘์ธ ํšŒ์‚ฌ๋“ค์€ ๊ฐ€์ž…ํ•˜์ง€ ์•Š์•˜๋‹ค. ๋”๊ตฌ๋‚˜ ์ด ์„ธ ์—…์ฒด๊ฐ€ ์ฐจ์ง€ํ•˜๋Š” ๋ฐ˜๋„์ฒด ์นฉ์…‹ ๋น„์ค‘์ด ์ „์ฒด์˜ 3๋ถ„์˜ 1์ด๋‹ค.

๊ฒŒ๋‹ค๊ฐ€ ์ธํ…”์—์„œ๋Š” HSA ์žฌ๋‹จ์— ๊ฐ€์ž…ํ•˜์ง€๋„ ์•Š์•˜์ง€๋งŒ ๋ธŒ๋กœ๋“œ์›ฐ ๋ถ€ํ„ฐ HSA ์ง€์›์ด ๋˜๋Š” ๊ตฌ์กฐ๋กœ ๋งŒ๋“ค์—ˆ๋‹ค. OpenCL 2.0์— HSA๊ฐ€ ํ‘œ์ค€ ๋ช…๋ น์–ด๋กœ ํฌํ•จ๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— HSA๊ฐ€ ๋˜๋Š” ๊ตฌ์กฐ์ด๊ณ , OpenCL 2.0์„ ์ง€์›ํ•˜๋ฉด HSA ์‚ฌ์šฉ์ด ๋˜๋Š” ์‹ค์ •์ด๋ผ AMD ์ž…์žฅ์—์„œ๋Š” ์˜คํžˆ๋ ค ๋…์ด ๋  ์ˆ˜๋„ ์žˆ๋Š” ์ƒํ™ฉ.[1] NVIDIA๋„ ์•„์ง๊นŒ์ง„ ๋–ก๋ฐฅ ์ˆ˜์ค€์— ๋ถˆ๊ณผํ•˜์ง€๋งŒ, ๊ทธ๋ž˜ํ”ฝ ์นด๋“œ์— ARM CPU๋ฅผ ๋‚ด์žฅํ•˜๋Š” ๊ณ„ํš์ด ์‹คํ˜„๋˜๋ฉด ์ด๋ฅผ ์œ„ํ•ด HSA ์ง€์›์„ ํ•  ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ๋‹ค.[2] ๋‹ค๋งŒ ์„ค๋ น ์ € ์‹œ๋‚˜๋ฆฌ์˜ค๊ฐ€ ์‹ค์ œ๋กœ ์ผ์–ด๋‚œ๋‹ค๊ณ  ํ•ด๋„ CUDA๋ฅผ ํ™•์žฅํ•˜๊ฑฐ๋‚˜ OpenCL 2.0(๋˜๋Š” ๊ทธ ์ดํ›„ ๋ฒ„์ „)๋ฅผ ํ†ตํ•ด ์ง€์›ํ•˜๋Š” ๋“ฑ, HSA ์žฌ๋‹จ๊ณผ๋Š” ๋”ฐ๋กœ ๋†€ ๊ฐ€๋Šฅ์„ฑ๋„ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์†๋‹จ์€ ๊ธˆ๋ฌผ.

์ž์„ธํ•œ ๋‚ด์šฉ์€ HSA ์žฌ๋‹จ(์˜๋ฌธ) ์ฐธ๊ณ .

3. ์—ญ์‚ฌ[ํŽธ์ง‘]

๊ฐœ๋… ์ž์ฒด๋Š” ์˜ˆ์ „๋ถ€ํ„ฐ[3] ์ œ์‹œ๋˜์—ˆ์ง€๋งŒ, HSA๋ผ๋Š” ์ด๋ฆ„์„ ๊ฐ€์ง€๊ฒŒ ๋œ ์—ญ์‚ฌ๋Š” ์งง๋‹ค. HSA๋ผ๋Š” ์ด๋ฆ„์ด ๋‚˜์˜ค๊ฒŒ ๋œ ๋•Œ๋Š” 2000๋…„๋Œ€ ์ค‘๋ฐ˜ ๊ฒฝ์ด๊ณ , HSA ์žฌ๋‹จ์ด ์„ค๋ฆฝ๋œ ๋• ๋ถˆ๊ณผ 2012๋…„๊ฒฝ์ด๋‹ค(์‚ฌ์‹ค HSA๋Š” ๊ธฐ์ˆ ๋ช…์ด๊ณ , AMD์—์„œ ๋ฐ€๋˜ ๋ธŒ๋žœ๋“œ๋Š” Fusion์ด๋‹ค. ํ•˜์ง€๋งŒ Future is Fusion ๋งˆ์ผ€ํŒ…์„ ๋ฐ€๋˜ ๊ฑธ ๋„ˆ ๊ณ ์†Œ ๋จน๊ณ  ๋ธŒ๋žœ๋“œ๋ฅผ ๋ฐ”๊ฟ€ ๋ป”ํ•˜๋‹ค ๋ณด๋‹ˆ HSA๋ž€ ์ด๋ฆ„์ด ์ „๋ฉด์œผ๋กœ ๋‚˜์˜ค๊ฒŒ ๋œ ๊ฒƒ.[4][5] ๊ทธ๋ฆฌ๊ณ  HSA๋ฅผ ์ง€์›ํ•˜๋Š” AMD์˜ ํ•˜๋“œ์›จ์–ด๋Š” 2013๋…„ 11์›”์— ์ถœ์‹œ๋œ PS4์˜ ์ปค์Šคํ…€ APU์™€ 2014๋…„ 1์›”์— ์ถœ์‹œ๋œ ์นด๋ฒ ๋ฆฌ๋ถ€ํ„ฐ ํ•ด๋‹น๋œ๋‹ค.
๋˜ํ•œ OpenCL 2.0์— HSA๊ฐ€ ํ‘œ์ค€ ๋ช…๋ น์–ด๋กœ ํฌํ•จ๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— OpenCL 2.0์„ ์ง€์›ํ•˜๋Š” ์†Œํ”„ํŠธ์›จ์–ด์—์„œ๋„ HSA๋ฅผ ์–ด๋А ์ •๋„ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ํ•˜์ง€๋งŒ ๊ฐ€์•ผ ํ•˜๋Š” ๊ธธ์ด ์•„์ง ๋ฉ€๋‹ค.

4. HSA์˜ ๊ฐœ๋…[ํŽธ์ง‘]


4.1. hUMA[ํŽธ์ง‘]


CPU ๋ฐ GPU ๊ฐœ๋ฐœ์‚ฌ AMD๊ฐ€ ์„ค๋ช…ํ•˜๋Š” hUMA(heterogeneous Uniform Memory Access)

์„œ๋กœ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์„œ(CPU์™€ GPU)์˜ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์„ ํ†ต์ผํ•˜์—ฌ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์„ ๊ณต์œ ํ•œ๋‹ค๋Š” ๊ฐœ๋…์ด๋‹ค. ํ•œ๋งˆ๋””๋กœ GPU๊ฐ€ CPU์™€ ๊ฐ™์€ ์ˆ˜์ค€์œผ๋กœ ๋‹ค๋ฃจ์–ด์ง€๋ฉฐ, ๋™์ผํ•œ ๋ฉ”๋ชจ๋ฆฌ์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

๊ธฐ์กด ๋ฐฉ์‹์€ CPU์™€ GPU๊ฐ€ ์„œ๋กœ ๋‹ค๋ฅธ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์œผ๋กœ ๋‚˜๋ˆ„์–ด์ ธ ์žˆ๋‹ค.[6] ์ด๋ ‡๊ฒŒ ๋”ฐ๋กœ ๋–จ์–ด์ง„ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์ด์—์„œ๋Š” ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ์‹œ ๋™๊ธฐํ™”์™€ ์ฃผ์†Œ ๋ณ€ํ™˜์ด ํ•„์š”ํ•˜๋‹ค. ์ด๋ฅผ CPU์™€ GPU๊ฐ€ ๊ณต์œ ํ•˜๋Š” ์ถ”์ƒํ™”๋œ ๋ฉ”๋ชจ๋ฆฌ ๊ณ„์ธต์„ ์ƒ์„ฑํ•ด ๋™์ผํ•œ ๋ฉ”๋ชจ๋ฆฌ ์–ด๋“œ๋ ˆ์Šค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ•ด๊ฒฐํ•œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

์ด ๊ณผ์ •์—์„œ์˜ CPU์™€ GPU์˜ ์–‘๋ฐฉํ–ฅ ๋ฉ”๋ชจ๋ฆฌ์˜ ์ผ๊ด€์„ฑ์„ ํ•˜๋“œ์›จ์–ด๋กœ ์œ ์ง€ํ•œ๋‹ค. ํ•˜๋“œ์›จ์–ด๊ฐ€ ์–‘๋ฐฉํ–ฅ์œผ๋กœ ์บ์‹œ๋ฅผ ์Šค๋ˆ„ํ”„ํ•˜๊ณ  ์ผ๊ด€์„ฑ์„ ์ž๋™์œผ๋กœ ํ™•๋ณดํ•œ๋‹ค. ์–ด๋А ํ”„๋กœ์„ธ์„œ๊ฐ€ ์บ์‹œ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐฑ์‹ ํ•œ ๊ฒฝ์šฐ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์„œ๋ฅผ ํƒ์ง€ํ•  ์ˆ˜ ์žˆ์–ด ๋ฉ”๋ชจ๋ฆฌ ์ผ๊ด€์„ฑ์˜ ์—๋Ÿฌ๊ฐ€ ์ƒ๊ธฐ์ง€ ์•Š๋„๋ก ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.[7]

๊ธฐ์กด์˜ ๋ฐ์ดํ„ฐ ์—ฐ๊ฒฐ๋ฐฉ์‹์€ "CPU - ์ฃผ ๋ฉ”๋ชจ๋ฆฌ - GPU ๋ฉ”๋ชจ๋ฆฌ - GPU" ์˜€๋Š”๋ฐ ์ฃผ ๋ฉ”๋ชจ๋ฆฌ์™€ GPU ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์„ ํ†ตํ•ฉ์‹œ์ผœ "CPU - ๊ณต์œ  ๋ฉ”๋ชจ๋ฆฌ - GPU"๋กœ ์—ฐ๊ฒฐํ•œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.
์ง๋ ฌ(์—ฐ์†์ ์ธ) ์ž‘์—… ๋‹ด๋‹นํ•˜๋Š” CPU์™€ ๋ณ‘๋ ฌํ™” ์ž‘์—…๋ฅผ ๋‹ด๋‹นํ•˜๋Š” GPU๋ฅผ ํšจ์œจ์ ์œผ๋กœ ๋ฌถ๋Š” ๊ฒŒ hUMA์˜ ์—ญํ• ์ด๋‹ค. ์ด๋ฅผ ํ†ตํ•ด์„œ GPU๊ฐ€ ์‹คํ–‰ํ•˜๋Š” ๋ฒ”์šฉ ํ”„๋กœ๊ทธ๋žจ์„ ์ง€๊ธˆ๋ณด๋‹ค ๋” ๊ฐ„๋‹จํ•˜๊ฒŒ ์“ธ ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.
  • ์žฅ์ : ๊ฐ„๋‹จํ•œ ์ž‘์—… ์Šค์ผ€์ค„๋กœ, ๊ด€๋ฆฌ๊ฐ€ ํŽธํ•˜๋‹ค.
    ๊ทธ ๋™์•ˆ์€ CPU์™€ GPU ์‚ฌ์ด์˜ ๋ฐ์ดํ„ฐ ์ „๋‹ฌ์„ OS๊ฐ€ ๊ด€๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ผ๊ธฐ ๋•Œ๋ฌธ์— ๋ฐ์ดํ„ฐ ์ถ”์ ์ด ์–ด๋ ค์šด๋ฐ, ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ๋‹จ๊ณ„๊ฐ€ ์ ์–ด ์ž‘์—… ์Šค์ผ€์ค„์ด ๋‹จ์ˆœํ•˜๋ฉฐ, ๋ณต์‚ฌํ•  ํ•„์š”๊ฐ€ ์—†์Œ์œผ๋กœ์จ ๋ฐ์ดํ„ฐ ์ถ”์ ์ด ๊ฐ„๋‹จํ•˜๊ณ  ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ๊ฐ€ ํ›จ์”ฌ ํŽธํ•˜๋‹ค.
    ์ด์— ๋”ฐ๋ผ ์ค„์–ด๋“  ์ž‘์—… ์Šค์ผ€์ค„๋งŒํผ ๋” ๋น ๋ฅธ ์ฒ˜๋ฆฌ๊ฐ€ ๋˜๊ณ , ๋ถˆํ•„์š”ํ•œ ๋ฉ”๋ชจ๋ฆฌ ์•ก์„ธ์Šค๊ฐ€ ์ค„์–ด๋“ค์–ด ์ „๋ ฅ ์†Œ๋น„๋„ ์ค„์ผ ์ˆ˜ ์žˆ๋‹ค.
    ๋˜ํ•œ ํ”„๋กœ๊ทธ๋ž˜๋จธ ์ž…์žฅ์—์„œ๋Š” ํ•˜๋“œ์›จ์–ด ์‚ฌ์ด์˜ ๋ฐ์ดํ„ฐ ์ „๋‹ฌ์‹œ์˜ ๋ฐ์ดํ„ฐ ์‚ฌ์ด์˜ ๋™๊ธฐํ™”์™€ ์ผ๊ด€์„ฑ ๋ฌธ์ œ๋ฅผ ์‹ ๊ฒฝ ์“ธ ํ•„์š”๊ฐ€ ์—†๋‹ค.[8]
  • ๋‹จ์ : ์‹œ๋Œ€๋ฅผ ์—ญํ–‰ํ•œ ๊ธฐ์ˆ ์ด์—ˆ๋‹ค.
    GPU ์ „์šฉ ๋ฉ”๋ชจ๋ฆฌ์ธ GDDR์€ ์ผ๋ฐ˜ DRAM๋ณด๋‹ค ์›”๋“ฑํžˆ ๋น ๋ฅธ ์†๋„๋กœ ๋™์ž‘ํ•œ๋‹ค.[9] ๊ทธ๋Ÿฐ๋ฐ ์ฃผ๋ฉ”๋ชจ๋ฆฌ์— GPU ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์„ ํ†ตํ•ฉ์‹œํ‚จ๋‹ค๋ฉด GPU์˜ ๋™์ž‘ ์†๋„๋„ ๋ฉ๋‹ฌ์•„ ๋–จ์–ด์ง„๋‹ค. ์ด ์ ์€ ์ด ๊ธฐ์ˆ ์ด ๋‚ด์žฅ ๊ทธ๋ž˜ํ”ฝ ์ „์šฉ ๊ธฐ์ˆ ์ด ๋  ์ˆ˜๋ฐ–์— ์—†๋Š” ์ด์œ ์ด๋‹ค.[10][11] ์ธํ…”์˜ ํ•˜์Šค์›ฐ๋ถ€ํ„ฐ๋Š” L4 ์บ์‹œ๋ผ๊ณ ๋„ ๋ถ€๋ฅด๋Š” 128MB์˜ eDRAM์ด ํƒ‘์žฌ๋จ์œผ๋กœ์จ ๋ธŒ๋กœ๋“œ์›ฐ, ์Šค์นด์ด๋ ˆ์ดํฌ ์„ธ๋Œ€์— ๋“ค์–ด์„œ์•ผ 'IRIS' ๋ผ๊ณ  ๋ถˆ๋ฆฌ๋Š” ๊ณ ์„ฑ๋Šฅ ๋‚ด์žฅ๊ทธ๋ž˜ํ”ฝ์„ ํƒ‘์žฌํ•œ ๋ชจ๋ธ์— ํ•œํ•˜์—ฌ AMD/APU๋ฅผ ๋›ฐ์–ด๋„˜๋Š” ๋‚ด์žฅ๊ทธ๋ž˜ํ”ฝ ์„ฑ๋Šฅ์„ ๋‚ผ ์ˆ˜ ์žˆ๋Š” CPU๋ฅผ ๋งŒ๋“ค์—ˆ๋‹ค.
๊ฒŒ๋‹ค๊ฐ€ ๊ทธ ๋™์•ˆ ๋งŒ๋“ค์–ด์ง„ ํ”„๋กœ๊ทธ๋žจ์€ GPU ๋ฉ”๋ชจ๋ฆฌ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋‚ด๋„๋ก ๋งŒ๋“ค์–ด์กŒ๋‹ค.[12] ๋‹น์—ฐํžˆ ๊ธฐ์กด ํ”„๋กœ๊ทธ๋žจ๊ณผ๋Š” ํ˜ธํ™˜์ด ์ „ํ˜€ ๋˜์ง€ ์•Š๋Š”๋‹ค. ์ด๋Ÿฌํ•œ HSA์˜ ์žฅ์ ์„ ์‚ด๋ฆฌ๊ธฐ ์œ„ํ•ด์„œ๋Š” ๊ธฐ์กด ๋ฐฉ์‹๊ณผ๋Š” ๋‹ค๋ฅธ ๋ฐฉ์‹์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•˜๋„๋ก ํ”„๋กœ๊ทธ๋žจ์„ ์ƒˆ๋กœ ์งœ์•ผ ํ•œ๋‹ค. ์ฆ‰, ๊ธฐ์กด ํ”„๋กœ๊ทธ๋žจ ์‚ฌ์šฉ์ž์—๊ฒŒ๋Š” ์ „ํ˜€ ์“ธ๋ชจ ์—†๋Š” ๊ธฐ์ˆ ์ธ ์…ˆ์ด๋‹ค.

4.2. hQ[ํŽธ์ง‘]



์œ„๊ฐ€ ๊ธฐ์กด ๋ฐฉ์‹, ์•„๋ž˜๊ฐ€ hQ(Heterogeneous Queuing)

hQ๋ž€ ๊ฐ„๋‹จํžˆ CPU์™€ GPU ์‚ฌ์ด์— ์žˆ๋Š” ๋†’์€ ์žฅ๋ฒฝ์„ ์ค„์ด๋Š” ๋ฐฉ์‹์˜ ๊ตฌ์กฐ๋ฅผ ๋งํ•œ๋‹ค.

ํ˜„์žฌ์˜ GPU์ฒ˜๋ฆฌ๋Š” OS์— ๋”ฐ๋ผ์„œ๋งŒ ์ œ์–ด ๋  ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋ž˜์„œ GPU ์ ‘๊ทผ์€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ โ†’ OS API โ†’ ๋“œ๋ผ์ด๋ฒ„ โ†’ GPU์˜ ๋ฐฉ์‹์œผ๋กœ ์ ‘๊ทผํ•˜๋Š”๋ฐ, GPU๊ฐ€ ์ž‘์—…์„ ์‹คํ–‰ํ•  ๋•Œ๋งˆ๋‹ค ์ด ๊ณผ์ •์„ ๊ฑฐ์ณ์„œ GPU๋ฅผ ํšจ์œจ์ ์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜๊ฐ€ ์—†์„ ๋ฟ๋”๋Ÿฌ, ์ด ๊ณผ์ •์—์„œ ์ƒ๋‹นํ•œ ์ง€์—ฐ์ด ๋ฐœ์ƒํ•œ๋‹ค.[13]

๊ทธ๋ž˜์„œ ์‚ฌ์šฉ์ž๊ฐ€ ์ง์ ‘ GPU์— ํ”„๋กœ์„ธ์Šค๋‚˜ ์ž‘์—…์„ ํ• ๋‹นํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•œ๋‹ค๋Š” ๊ฒƒ์ด hQ์˜ ๊ฐœ๋…์ด๊ณ , ์ด๋ฅผ ์œ„ํ•ด ์‚ฌ์šฉ์ž๊ฐ€ GPU ์ž‘์—…์„ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•œ ๊ตฌ์กฐ๋ฅผ ํ•˜๋“œ์›จ์–ด ๋‹จ๊ณ„์—์„œ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์ด hQ์ด๋‹ค.
  • ์žฅ์ : GPU ์ž‘์—…์„ ์œ ์ €๊ฐ€ ์ง์ ‘ ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด์— ๋”ฐ๋ผ์„œ ๊ธฐ์กด ๋ฐฉ์‹์˜ ๋ณต์žกํ•œ ๊ณ„์ธต ๋ณ€ํ™˜์— ์˜ํ•œ ์ ‘๊ทผ์ด ํ•„์š”ํ•˜์ง€ ์•Š๊ฒŒ ๋˜๋ฉด์„œ ์˜ค๋ฒ„ํ—ค๋“œ๋ฅผ ํฌ๊ฒŒ ๋‚ฎ์ถœ ์ˆ˜ ์žˆ๋‹ค. CPU : ์ผ์ด ์ค„์—ˆ๋‹ค! ์•ผ ์‹ ๋‚œ๋‹ค.
    OS๋ฅผ ๊ฑฐ์น˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— GPU ์ž‘์—…์„ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•œ ํŒจํ‚ท ํ˜•์‹์„ HSA ๊ธฐ๋ฐ˜ ํ”Œ๋žซํผ ์•„๋ž˜์—์„œ ํ‘œ์ค€ํ™”ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ฆ‰, x86 ๊ธฐ๋ฐ˜ ํ”„๋กœ์„ธ์„œ๋‚˜ ARM ๊ธฐ๋ฐ˜ ํ”„๋กœ์„ธ์„œ๋„ HSA๋ฅผ ์ง€์›ํ•˜๊ธฐ๋งŒ ํ•˜๋ฉด ๊ฐ™์€ ํฌ๋งท์„ ํ™œ์šฉํ•˜์—ฌ GPU๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ๋‹จ์ : ์ž ์žฌ์ ์ธ ํ˜ธํ™˜์„ฑ ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธธ ์ˆ˜ ์žˆ๋‹ค.
    OS๊ฐ€ ๋ชจ๋“  ์ฃผ๋ณ€๊ธฐ๊ธฐ๋ฅผ ์ œ์–ดํ•˜๋Š” ๊ฒƒ์ด ์‚ฌ์šฉ์ž์—๊ฒŒ ๊ฐ€์žฅ ํŽธ๋ฆฌํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ์‚ฌ์šฉ์ž ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ํ•˜๋“œ์›จ์–ด์— ๋งˆ์Œ๋Œ€๋กœ ์ ‘์†ํ•  ์ˆ˜ ์žˆ๋Š” ํ™˜๊ฒฝ์—์„œ๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ํ˜ธํ™˜์„ฑ์„ ๋ณด์ฆํ•˜์ง€ ๋ชปํ•˜๊ณ  ๋ณด์•ˆ๋„ ์ง€ํ‚ฌ ์ˆ˜ ์—†๋‹ค.[14]
    ๋˜ํ•œ hUMA์™€ ๋น„์Šทํ•œ ๋ฌธ์ œ๊ฐ€ ์žˆ๋Š”๋ฐ, ์ƒˆ๋กœ์šด ์ด ์ ‘๊ทผ๋ฐฉ์‹์€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์ ‘๊ทผ ๋ฐฉ์‹๋„ ์™„์ „ํžˆ ๋ฐ”๊พธ์–ด์•ผ ํ•œ๋‹ค. ์ด ๋ฐฉ์‹์ด ๊ธฐ์กด ๋ฐฉ์‹๋ณด๋‹ค ๋” ์‰ฝ๊ณ  ๋น ๋ฅด๋”๋ผ๋„ ๊ทธ ๋™์•ˆ ์Œ“์•„์˜ฌ๋ฆฐ ๋…ธํ•˜์šฐ๋ฅผ ์ „๋ถ€ ํฌ๊ธฐํ•˜๊ณ  ์ƒˆ๋กœ์šด ํ•˜๋“œ์›จ์–ด์— ๋งž์ถ˜ ์ƒˆ๋กœ์šด ๋ฐฉ์‹์˜ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ธฐ๋ฒ•์„ ํ™œ์šฉํ•  ๋งŒํผ ๋ชจํ—˜์‹ฌ ๊ฐ•ํ•œ ํ”„๋กœ๊ทธ๋ž˜๋จธ๋„ ๋งŽ์ง€ ์•Š๋‹ค๋Š” ์ ์ด๋‹ค.
    ๊ฒŒ๋‹ค๊ฐ€ ์ƒˆ๋กœ์šด ์ด ํ•˜๋“œ์›จ์–ด๋ฅผ ๋งŒ๋“œ๋Š” ํšŒ์‚ฌ๋Š” ์‹œ์žฅ ์ ์œ ์œจ์ด 20%์— ๋ถˆ๊ณผํ•˜๊ณ  ์ „์ฒด ํ•˜๋“œ์›จ์–ด์—์„œ๋Š” 10% ์•ˆ๋˜๋Š” ๊ทœ๋ชจ์ธ๋ฐ, ์ด๋Ÿฌํ•œ ์ƒˆ๋กœ์šด ํ•˜๋“œ์›จ์–ด์— ๋งž์ถ”์–ด ํ”„๋กœ๊ทธ๋žจ์„ ๋งŒ๋“ค ํšŒ์‚ฌ๋„ ๋งŽ์ง€ ์•Š๋‹ค๋Š” ์ ์ด๋‹ค. ๋งˆ์ด๋„ˆ์˜ ๋น„์• [15]

5. HSA์˜ ๋ชฉํ‘œ์™€ ํ•œ๊ณ„[ํŽธ์ง‘]

ํ˜„์žฌ์˜ GPU ํ™œ์šฉ ๋ฐฉ์‹
OS์˜ ๊ฐ„์„ญ์ด ๋งŽ๊ณ  ๋‹จ๊ณ„๊ฐ€ ๋ณต์žกํ•˜์—ฌ ํ™œ์šฉํ•˜๊ธฐ๊ฐ€ ํž˜๊ฒน๋‹ค.
HSA์˜ GPU ํ™œ์šฉ๋ฐฉ์‹
์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด GPU๋ฅผ ์ง์ ‘ ํ™œ์šฉ ํ• ์ˆ˜ ์žˆ๋„๋ก ํ•˜์—ฌ ํšจ์œจ์„ ๋†’์ธ๋‹ค.
HSA์˜ ๊ถ๊ทน์ ์ธ ๋ชฉ์ ์€ ๋ณ‘๋ ฌ ์—ฐ์‚ฐ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ํ™•๋Œ€์ด๋‹ค. ์ด๋ฅผ ์œ„ํ•ด GPGPU ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ๋‚œ์ด๋„๋ฅผ ๋‚ฎ์ถ”๊ณ  ํ•˜๋“œ์›จ์–ด์˜ ์ œ์•ฝ์— ์–ฝ๋งค์ด์ง€ ์•Š๊ฒŒ ๋™์ž‘ํ•  ์ˆ˜ ์žˆ๋Š” ๋ณ‘๋ ฌ ์ปดํ“จํŒ… ํ™˜๊ฒฝ์„ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด๋‹ค.[16] ์ด ๋ชฉ์ ์€ AMD๊ฐ€ 2000๋…„ ์ค‘๋ฐ˜์— ๋‚ด์„ธ์šฐ๋˜ ํ•ดํ…Œ๋กœ์ง€๋‹ˆ์–ด์Šค ์ฝ”์–ด๋ผ๋Š” ๋ชฉํ‘œ๋ฅผ ์ „ ํ”Œ๋ ›ํผ์œผ๋กœ ํ™•๋Œ€ํ•œ ๋ชจ์Šต์ด๊ธฐ๋„ ํ•˜๋‹ค.

๊ถ๊ทน์ ์ธ ๋‹จ๊ณ„์—์„œ๋Š”์‚ฌ์šฉ์ž ์ž…์žฅ์—์„œ GPU๋Š” CPU์˜ ๋ณด์กฐ ์—ฐ์‚ฐ ์ฝ”์–ด์ •๋„๋กœ ์ธ์‹ํ•  ์ •๋„๋กœ GPGPU ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ๋‚œ์ด๋„๋ฅผ ๋‚ฎ์ถ”๋Š”๊ฒƒ์ด ๋ชฉํ‘œ์ด๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ๋ชฉ์ ๋งŒํผ ๊ทธ ํ•œ๊ณ„ ์—ญ์‹œ ๋šœ๋ ทํ•˜๋‹ค. GPGPU ๋ถ„์•ผ์—์„œ ์„ ๋‘์ฃผ์ž์ธ NVIDIA์˜ CUDA๋ฅผ ๋Œ์–ด๋“ค์ด์ง€ ๋ชปํ–ˆ๋‹ค๋Š” ์ [17], ๊ทธ๋ฆฌ๊ณ  CPU์ชฝ์—์„œ๋„ ์ธํ…”์„ ๋Œ์–ด๋“ค์ด์ง€ ๋ชปํ•ด์„œ ๋‹น์žฅ ๋Œ€๋ถ€๋ถ„์˜ ํ”„๋กœ๊ทธ๋ž˜๋จธ๋“ค์ด HSA์— ๋Œ€ํ•ด์„œ ์˜ ์ข‹์ง€ ๋ชปํ•œ ์‹œ์„ ์ด๋‹ค. GPGPU ๋‚œ์ด๋„๊ฐ€ ์•„๋ฌด๋ฆฌ ๋‚ฎ์•„์ง„๋‹ค๊ณ ํ•ด๋„ ์ด๋ฅผ ์ด์šฉํ•  ํ•˜๋“œ์›จ์–ด๊ฐ€ ์—†๋‹ค๋ฉด ๋ฌด์šฉ์ง€๋ฌผ์ด๋‹ค. ๊ทธ๋Ÿฐ๋ฐ AMD๋Š” ์นด๋ฒ ๋ฆฌ๋ถ€ํ„ฐ ๋น„๋กœ์†Œ HSA๋ฅผ ์ง€์›ํ•  ์ •๋„๋กœ, ๋Šฆ์€ ์†๋„๋กœ HSA๋ฅผ ์ง€์›ํ•˜๋Š” ํ•˜๋“œ์›จ์–ด๋ฅผ ๋ฐœํ‘œํ•œ๋‹ค. ์‹ฌ์ง€์–ด ์นด๋ฒ ๋ฆฌ์กฐ์ฐจ ๋‚ด๋ถ€ ๋ฒ„์Šค ๊ตฌ์กฐ๊ฐ€ ๋„๋–ผ๊ธฐ ์‹œ์žฅ์ฒ˜๋Ÿผ ์–ด์ง€๋Ÿฌ์›Œ์„œ, GPU๋Š” CPU ์บ์‹œ๋ฅผ ๋“ค์—ฌ๋‹ค ๋ณผ ์ˆ˜ ์žˆ์ง€๋งŒ CPU๋Š” GPU ์บ์‹œ๋ฅผ ๋“ค์—ฌ๋‹ค ๋ณผ ์ˆ˜ ์—†๋Š” ๋“ฑ์˜ ๋ฌธ์ œ๊ฐ€ ์žˆ๊ณ , ์ •์ž‘ ์ด๋Ÿฐ ๋ฌธ์ œ๊ฐ€ ๊น”๋”ํ•˜๊ฒŒ ํ•ด๊ฒฐ๋œ ๋ ˆ์ด๋ธ ๋ฆฟ์ง€์— ์™€์„œ๋Š” ๋‹ด๋‹น์ž๋“ค์ด ๋ชจ๋‘ ๊ฒฝ์Ÿ์‚ฌ๋กœ ์˜ฎ๊ฒจ๊ฐ€ ๊ฒฝ์Ÿ ํ”Œ๋žซํผ์„ ๋งŒ๋“ค๊ณ  ์žˆ๋Š” ๋“ฑ ๋™๋ ฅ ์ƒ์‹ค๋กœ ํ™๋ณด ๋ฌธ์„œ์— HSA๋ž€ ์–ธ๊ธ‰์กฐ์ž ๋‹ค ๋นผ๋ฒ„๋ฆฌ๊ณ  ๊ด€๋ง ์ค‘์ด๋‹ค(...)# ๊ทธ ์ค‘ ํ•œ ์‚ฌ๋žŒ์ด NVIDIA๋กœ ๊ฐ€์„œ ๋งŒ๋“  ๊ฒŒ NVLINK๋ผ๊ณ . NVLINK๋Š” ํ’€์ŠคํŽ™ ์„ธํŒ… ๊ธฐ์ค€ 1์„ธ๋Œ€ 100GB/s (ํ•˜ํ”„ ๋“€ํ”Œ๋ ‰์Šค), 2์„ธ๋Œ€ ์–‘๋ฐฉํ–ฅ 300GB/s (ํ’€ ๋“€ํ”Œ๋ ‰์Šค)์˜ ์–ด๋งˆ์–ด๋งˆํ•œ ๋Œ€์—ญํญ์œผ๋กœ APU์™€ ์œ ์‚ฌํ•œ ํšจ๊ณผ๋ฅผ ๋ˆ„๋ฆฌ๋Š” ํ”Œ๋žซํผ์ด๋‹ค. ๋‹ค๋งŒ CPU์™€์˜ ํ†ต์‹ ์— ์จ๋จน์œผ๋ ค๋ฉด PowerPC์™€ ์กฐํ•ฉํ•ด์•ผ๋งŒ ํ•œ๋‹ค. ์ด๋ก ์ƒ x86 CPU์™€์˜ ์กฐํ•ฉ๋„ ๊ฐ€๋Šฅํ•˜๊ธด ํ•˜์ง€๋งŒ CPU์ชฝ์—์„œ ์ง€์›์„ ์•ˆ ํ•œ๋‹ค.[18] ๊ทธ CPU ๋งŒ๋“œ๋Š” ํšŒ์‚ฌ๋“ค์ด ๊ฒฝ์Ÿ ํ”Œ๋žซํผ ํŒ๋งค์ž๋ผ๋Š” ์‚ฌ์‹ค์„ ์ƒ๊ฐํ•˜๋ฉด ์ง€๊ทนํžˆ ๋‹น์—ฐํ•œ ์ผ์ด์ง€๋งŒ, ๋ฐ˜๋Œ€๋กœ PowerPC๋Š” ํ•ด๋‹น ๋ฌธ์„œ์˜ ๋น„ํŒ์ ์ธ ์„œ์ˆ ๋“ค์„ ๋ณด๋ฉด ์•Œ๊ฒ ์ง€๋งŒ ์ˆœ์ˆ˜ CPU ์„ฑ๋Šฅ์œผ๋ก  ๊ฒฝ์Ÿ์ด ์–ด๋ ค์šด ์ƒํ™ฉ์ด๋ผ, ์Šˆํผ์ปดํ“จํ„ฐ์—์„œ ์„ฑ๋Šฅ ๊ฒฝ์Ÿ์„ ์œ„ํ•ด GPU, ๋ณด์กฐ ํ”„๋กœ์„ธ์„œ๋ฅผ ์ ๊ทน์ ์œผ๋กœ ํ™œ์šฉํ•˜๋Š” ๋“ฑ NVLINK๋ฅผ ์ง€์›ํ• ๋งŒํ•œ ๋™๊ธฐ๊ฐ€ ์ถฉ๋ถ„ํ•œ ์ƒํ™ฉ์ด๋‹ค.

๋•Œ๋ฌธ์— 19๋…„ ํ˜„์žฌ HSA๋ฅผ ๊ฐ€์žฅ ์ž˜ ์จ๋จน์„ ์ˆ˜ ์žˆ๋Š” ํ”Œ๋žซํผ์€ HSA๋ฅผ ์ฒ˜์Œ ์ถ”์ง„ํ•œ AMD๊ฐ€ ์•„๋‹ˆ๋ผ, ์—ญ์„ค์ ์ด๊ฒŒ๋„ ๊ธฐ์ˆ ์ ์œผ๋กœ๋Š” HSA๊ฐ€ ์•„๋‹Œ(...) PowerPC ํ”Œ๋žซํผ ๊ธฐ๋ฐ˜์˜ CUDA์ด๋‹ค. ์ธํ…”์€ GPU์„ฑ๋Šฅ์ด ๋‚ฎ๊ณ , AMD๋Š” ์กฐ์šฉํžˆ ์—…๊ณ„ ๋Œ€์„ธ์— ๋ฌป์–ด๊ฐ€๋Š” ๋ถ„์œ„๊ธฐ์ด๊ณ (๋”๊ตฌ๋‚˜ ์ด์ชฝ APU๋„ ์ธํ…”๋ณด๋‹จ ๊ณ ์„ฑ๋Šฅ์ผ ๋ฟ, ์—ฌ์ „ํžˆ GPU ์„ฑ๋Šฅ์ด ๋‚ฎ์€ ์ €๊ฐ€ํ˜•๊ณผ ๋ชจ๋ฐ”์ผ ์ œํ’ˆ๋“ค๋งŒ ๋‚ด๋†“๊ณ  ์žˆ๋‹ค), ํ•˜์ด์—”๋“œ๊ธ‰ ์ด์ƒ GPU๋ฅผ APU์ฒ˜๋Ÿผ ์จ๋จน์„ ์ˆ˜ ์žˆ๋Š” ํ”Œ๋žซํผ์€ ์ง€ํฌ์Šค์ถœ์‹ ์˜ HPC GPU๋“ค์„ NVLINK๋ฅผ ์ง€์›ํ•˜๋Š” CPU์™€ ์—ฐ๊ฒฐํ•œ ๊ฒƒ์ด ์œ ์ผํ•˜๊ธฐ ๋•Œ๋ฌธ(...)

๊ฒŒ๋‹ค๊ฐ€ ์ธํ…”๊ณผ IBM๋„ ๋…์ž ํ”Œ๋žซํผ์œผ๋กœ GPGPU ์‹œ์žฅ์— ์ง„์ถœ ์ค‘์ด๋ผ๋Š” ์ ์€ ์žฅ๊ธฐ์ ์œผ๋กœ HSA ํ”„๋กœ์ ํŠธ์˜ ๋ฐœ๋ชฉ์„ ์žก์„ ๊ฒƒ์œผ๋กœ ๋ณด์ธ๋‹ค.

๋‹จ, ์ธํ…”๋„ HSA ์ง€์›์— ๋Œ€ํ•œ ํˆฌ์ž๋Š” ๊พธ์ค€ํžˆ ํ•˜๋Š”๋ฐ, ์ธํ…”์—์„œ GPGPU์šฉ์œผ๋กœ ๋ฏธ๋Š” ๋…์ž ํ”Œ๋žซํผ์ธ ์ œ์˜จ ํŒŒ์ด๋Š” ์Šˆํผ์ปดํ“จํ„ฐ ๊ฐ™์ด HPC์šฉ์ด์ง€ ๊ทธ๋‚˜๋งˆ ํฌ๊ธฐํ–ˆ๋‹ค.#, ๋ฐ์Šคํฌํƒ‘์ด๋‚˜ ๋…ธํŠธ๋ถ์— ์“ธ ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค(์• ์ดˆ์— ์ œ์˜จ ํŒŒ์ด 0์„ธ๋Œ€, ํ‘์—ญ์‚ฌ ๋ผ๋ผ๋น„๋ฅผ ์ถœ์‹œ ๋ชปํ•œ ์ด์œ ์˜ ํ•˜๋‚˜๊ฐ€ ์–‘์ชฝ ๋‹ค ๊ฐ„๋ณด๋‹ค๊ฐ€ ์ด๊ฒŒ ์•„๋‹Œ๊ฐ€๋ฒผํ•˜๊ณ  ๋ฐฉํ–ฅ์ „ํ™˜ํ•˜๋‹ค๊ฐ€ ์‹œ๊ธฐ๋ฅผ ๋†“์ณ์„œ...) ๋ธŒ๋กœ๋“œ์›ฐ๋ถ€ํ„ฐ๋Š” ๊ณต์œ  ๋ฉ”๋ชจ๋ฆฌ์™€ OpenCL 2.0๋„ ์ง€์›ํ•˜๋Š” ๋“ฑ HSA ์ง€์›์ด ๋˜๋Š” ํ•˜๋“œ์›จ์–ด ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. ์บ์‹œ ๊ตฌ์กฐ๋ฅผ ์ƒ๊ฐํ•˜๋ฉด, ๋‚˜์•„๊ฐ€ AMD๋ณด๋‹ค๋„ ์•ž์„œ๋Š” ๋ชจ์Šต์„ ๋ณด์ธ๋‹ค.[19]

AMD ์—ญ์‹œ ๋งˆ๋ƒฅ ์† ๋†“๊ณ  ์žˆ๋Š” ๊ฑด ์•„๋‹ˆ๋ผ์„œ, ๋ผ์ด์   5์ฒœ ์‹œ๋ฆฌ์ฆˆ + ๋ผ๋ฐ์˜จ 6์ฒœ ์‹œ๋ฆฌ์ฆˆ๋ถ€ํ„ฐ๋Š” CPU์™€ GPU ์ƒํ˜ธ๊ฐ„์˜ ๋ฌด์ œํ•œ ๋ฉ”๋ชจ๋ฆฌ ์—‘์„ธ์Šค๋ฅผ ํ†ตํ•œ ์„ฑ๋Šฅ ํ–ฅ์ƒ์ด ๊ฐ€๋Šฅํ•˜๋‹ค๊ณ  ํ•œ๋‹ค. AMD์˜ RX 6000 GPU, ์Šค๋งˆํŠธ ๋ฉ”๋ชจ๋ฆฌ ์•ก์„ธ์Šค๋ฅผ ํ†ตํ•ด Ryzen 5000 CPU๋กœ ์„ฑ๋Šฅ ํ–ฅ์ƒ

6. HSA ์ง€์› ํ”„๋กœ๊ทธ๋žจ[ํŽธ์ง‘]

[1] ๋‹จ, OpenCL 2.0์„ ํ†ตํ•œ HSA ์‚ฌ์šฉ์€, ์ •์‹ ์ง€์›์ด๋ณด๋‹ค๋Š” ๊ผผ์ˆ˜์— ๊ฐ€๊น๊ณ , ์ œ์•ฝ๋„ ์‹ฌํ•˜๋‹ค๊ณ  ํ•œ๋‹ค.
[2] ๋‹ค๋ฆ„ ์•„๋‹Œ ARM์ด HSA ์žฌ๋‹จ์˜ ์„ค๋ฆฝ ๋ฉค๋ฒ„์ด๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.
[3] AMD ๊ธฐ์ค€์œผ๋กœ, ATI ์ธ์ˆ˜ ๋‹น์‹œ๋ถ€ํ„ฐ ๊ณ„ํšํ•˜๊ณ  ์žˆ์—ˆ๋‹ค.
[4] ๋งํฌํ•œ ํŒŒ์ฝ”์ฆˆ ๊ฒŒ์‹œํŒ ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ์˜ ๊ฒฝ์šฐ, 09๋…„๋„~12๋…„๋„ ์ดˆ๊นŒ์ง€ 'Fusion APU'๋ผ๋Š” ํ‘œํ˜„์ด ๋งŽ์ด ์‚ฌ์šฉ๋˜์—ˆ๋Š”๋ฐ, 12๋…„๋„ ์ค‘๋ฐ˜๋ถ€ํ„ฐ ์™ ์‚ฌ๋ผ์กŒ๋‹ค. ๋ฐ˜๋ฉด์— ๊ฐ™์€ ๊ฒŒ์‹œํŒ์—์„œ HSA ๊ธฐ์‚ฌ๋Š” 12๋…„๋„ ๋ง๋ถ€ํ„ฐ ๋‚˜์˜จ๋‹ค.
[5] ์—ฌํŠผ 13๋…„ 1์›”์— ํ•ฉ์˜ํ•˜๊ธด ํ–ˆ๋‹ค.
[6] NUMA๋ผ๊ณ  ๋ถ€๋ฅด๋Š”๋ฐ, '์„œ๋กœ ๋‹ค๋ฅธ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์œผ๋กœ ๋‚˜๋‰œ ๊ฑฐ = NUMA'๊ฐ€ ์•„๋‹ˆ๋‹ค. ํ•˜๋‚˜์˜ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์œผ๋กœ ๋˜์–ด ์žˆ์–ด๋„ ์–ด๋–ค CPU core๊ฐ€ ์–ด๋–ค ์ฃผ์†Œ๋ฅผ ์ ‘๊ทผํ•˜๋А๋ƒ์— ๋”ฐ๋ผ latency / bandwidth์—์„œ ์„ฑ๋Šฅ์ฐจ์ด๊ฐ€ ๋‚˜๋Š” ๊ฒฝ์šฐ์—๋„ NUMA๊ฐ€ ๋œ๋‹ค. ๋”ฐ๋ผ์„œ ์‹œ์Šคํ…œ DDR ๋ฉ”๋ชจ๋ฆฌ์™€ ๊ทธ๋ž˜ํ”ฝ ์นด๋“œ์˜ ์™ธ์žฅ GDDR ๋ฉ”๋ชจ๋ฆฌ์˜ ์˜์—ญ์ด ํ•˜๋‚˜๋กœ ํ•ฉ์ณ์ง€๋ผ๋„ DDR๊ณผ GDDR ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ๋ฌผ๋ฆฌ์ ์œผ๋กœ ํ•˜๋‚˜์˜ ๋ฉ”๋ชจ๋ฆฌ๋กœ ํ†ตํ•ฉ๋˜์ง€ ์•Š๋Š” ์ด์ƒ, CPU์—์„œ DDR ๋ฉ”๋ชจ๋ฆฌ๋กœ ์ ‘๊ทผํ•˜๋Š” ๊ฒƒ๊ณผ ๊ทธ๋ž˜ํ”ฝ ์นด๋“œ์˜ GDDR ๋ฉ”๋ชจ๋ฆฌ๋ฅผ PCIe ๋ฒ„์Šค๋ฅผ ํ†ตํ•ด์„œ ์ ‘๊ทผํ•˜๋Š” ๊ฒƒ๊ณผ๋Š” latency / bandwidth์—์„œ ์„ฑ๋Šฅ์ฐจ์ด๊ฐ€ ๋‚  ์ˆ˜๋ฐ–์— ์—†๊ธฐ ๋•Œ๋ฌธ์— ์—ฌ์ „ํžˆ NUMA๋กœ ๋‚จ๋Š”๋‹ค.
[7] ๊ฐ„๋‹จํ•˜๊ฒŒ ๋งํ•ด์„œ, ์—”๋น„๋””์•„์˜ CUDA์™€ ๋น„์Šทํ•œ ๋ฐฉํ–ฅ์œผ๋กœ ๊ฐ„๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋œ๋‹ค.
[8] ์ฆ‰, ์‹œ๊ธˆ ์‚ฌ์šฉ๋˜๋Š” ๋ฐฉ์‹์€ ์ฃผ ๋ฉ”๋ชจ๋ฆฌ์™€ GPU ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์ด์˜ ๋‘ ๋ฐ์ดํ„ฐ์˜ ์ผ์น˜ ์—ฌ๋ถ€๋ฅผ ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ํ™•์ธํ•ด ์ฃผ์–ด์•ผ ํ•œ๋‹ค. ๊ฒŒ๋‹ค๊ฐ€ ์ตœ์ ํ™”๋ฅผ ์œ„ํ•ด์„œ๋Š” GPU ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ์–ด๋А ์ •๋„๊นŒ์ง€ ๋ฐ์ดํ„ฐ๋ฅผ ํ•œ ๋ฒˆ์— ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ ์ง์ ‘ ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ํ™•์ธํ•˜๊ณ  ์—ฌ๊ธฐ์— ๋งž์ถ”์–ด ์ฒ˜๋ฆฌ ํ•  ๋ฐ์ดํ„ฐ์–‘์„ ์กฐ์ ˆํ•ด์•ผ ํ•œ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ HSA์—๋Š” ๊ทธ๋Ÿฌํ•œ ์ž‘์—…์€ ๋ถˆํ•„์š”ํ•˜๋‹ค.
[9] ๋งˆ์น˜ RAID์ฒ˜๋Ÿผ ๋ฑ…ํฌ ๊ทธ๋ฃน์„ ๋งŒ๋“ค์–ด ๋น„์•ฝ์ ์ธ ์†๋„ ํ–ฅ์ƒ์„ ๊ฐ€์ ธ์™”๋‹ค. ํ•˜์ง€๋งŒ GDDR์ด ์ผ๋ฐ˜ DRAM์„ ๋Œ€์ฒดํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์€ ์•„๋‹ˆ๋‹ค. ์–ด๋””๊นŒ์ง€๋‚˜ ๊ทธ๋ž˜ํ”ฝ ์—ฐ์‚ฐ์— ํ•œ์ •๋œ ์„ฑ๋Šฅ์ด๋‹ค. ๊ทธ๋Ÿฐ๋ฐ HBM์€ APU๋‚˜ ์„œ๋ฒ„์šฉ CPU์— ๋„ฃ๋Š”๋‹ค๋Š” ์†Œ๋ฌธ์ด ๋“ค๋ฆฌ๋Š” ๊ฒƒ์œผ๋กœ ๋ณด์•„ ์ •๋ง๋กœ ์ผ๋ฐ˜์ ์ธ DRAM์„ ๋Œ€์ฒดํ•  ์ง€๋„ ๋ชจ๋ฅธ๋‹ค. ๋ฌผ๋ก  ํ˜„์žฌ์™€ ๋™์ผํ•œ ์ˆ˜์ค€์˜ ํผํฌ๋จผ์Šค๋ฅผ ๋ฐœํœ˜ํ•˜๋ ค๋ฉด ๊ธฐ์ˆ ์˜ ์ง„๋ณด์™€ ํ•จ๊ป˜ ์ตœ์ ํ™” ์ž‘์—…์ด ๋™๋ฐ˜๋˜์–ด์•ผ ํ•  ๊ฒƒ์ด๋‹ค.
[10] ๋ฌผ๋ก  ํ”Œ๋ ˆ์ด์Šคํ…Œ์ด์…˜ 4์ฒ˜๋Ÿผ ์ผ๋ฐ˜ DRAM์ด ์•„๋‹Œ GDDR5๋ฅผ ์ฃผ ๋ฉ”๋ชจ๋ฆฌ๋กœ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด ๊ฐ„๋‹จํ•˜๊ฒŒ ํ•ด๊ฒฐ๋˜๊ฒ ์ง€๋งŒ ๊ฒŒ์ž„ ์ฝ˜์†”์ด ์•„๋‹Œ Windows๋ผ๋Š” ๋ฒ”์šฉ ์šด์˜์ฒด์ œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ผ๋ฐ˜ PC์— DRAM์„ GDDR๋กœ ๋ฐ”๊พธ๋Š” ๊ฒƒ์€ ํ˜„์žฌ๋กœ์„œ๋Š” ๋งค์šฐ ์–ด๋ ต๋‹ค.
[11] ํ˜„์‹ค์ ์ธ ํ•œ๊ณ„๋กœ, ์•„์ง์€ ๋‚ด์žฅ ๊ทธ๋ž˜ํ”ฝ์—๋งŒ HSA๊ฐ€ ์ ์šฉ๋˜์ง€๋งŒ, HSA๋Š” ์™ธ์žฅ GPU์˜ ๊ทธ๋ž˜ํ”ฝ ๋ฉ”๋ชจ๋ฆฌ์™€์˜ ํ†ตํ•ฉ๋„ ์ถ”์ง„ํ•˜๊ธฐ์— ์—„๋ฐ€ํžˆ๋Š” ํ‹€๋ฆฐ ๋ง์ด๋‹ค.
[12] ์ฃผ ๋ฉ”๋ชจ๋ฆฌ์˜ ์†๋„๊ฐ€ GPU ์ฒ˜๋ฆฌ์†๋„๋ฅผ ๋ชป๋”ฐ๋ผ์˜ค๋‹ค๋ณด๋‹ˆ ๋ฏธ๋ฆฌ ์ฒ˜๋ฆฌํ•  ๋ฐ์ดํ„ฐ๋ฅผ GPU ๋ฉ”๋ชจ๋ฆฌ์— ๋ณด๋‚ด์ค€๋‹ค. ์ด๋ฅผ 'ํ”„๋ฆฌ๋กœ๋”ฉ'์ด๋ผ๊ณ  ํ•˜๋Š”๋ฐ, ์ž์„ธํ•œ ๋‚ด์šฉ์— ๋Œ€ํ•ด์„œ๋Š”๋Š” ๋กœ๋”ฉํ•ญ๋ชฉ์˜ 2.2๋ฒˆ '์‹ฌ๋ฆฌ์Šค ๋ฐฉ์‹' ์„ ์ฐธ์กฐํ•˜์ž.
[13] ๋ฌผ๋ก  OS๊ฐ€ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ชจ๋“  ์ž‘์—…์€ CPU๊ฐ€ ๋‹ด๋‹นํ•œ๋‹ค. ์ฆ‰, GPU๋ฅผ ํ™œ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ GPU๋กœ ์ ‘๊ทผํ•  ๋•Œ๋งˆ๋‹ค CPU๊ฐ€ ์—„์ฒญ๋‚œ ์ž‘์—…์„ ์ฒ˜๋ฆฌํ•˜๋Š” ์…ˆ์ด๋‹ค.
[14] ๊ฐ„๋‹จํ•˜๊ฒŒ ๋งํ•ด์„œ, ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์ ‘๊ทผํ•ด์„œ๋Š” ์•ˆ๋˜๋Š” ์œ„์น˜์˜ ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ์— ์ ‘๊ทผํ•˜๋ฉด ์‹œ์Šคํ…œ์ด ๋‹ค์šด๋˜์–ด ๋ฒ„๋ฆฐ๋‹ค. ์ด๋ฅผ ๋ฐฉ์ง€ ํ•˜๊ธฐ ์œ„ํ•ด์„œ OS๊ฐ€ ๋ชจ๋“  ํ•˜๋“œ์›จ์–ด์™€ ๋ฉ”๋ชจ๋ฆฌ ์ ‘๊ทผ์„ ๊ด€๋ฆฌํ•œ๋‹ค. ๊ทธ๋Ÿผ์—๋„ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์ ‘๊ทผํ•˜๋ฉด OS๋Š” ๋ธ”๋ฃจ์Šคํฌ๋ฆฐ ๊ฐ™์€ ์ปค๋„ ํŒจ๋‹‰์„ ์ผ์œผํ‚จ๋‹ค. ์ฆ‰, OS๋ฅผ ๋ฐฐ์ œํ•œ ์ ‘๊ทผ ๋ฐฉ์‹์€ ์ž ์žฌ์ ์œผ๋กœ ์ปค๋„ ๋ถˆ์•ˆ์ •์„ ์ดˆ๋ž˜ํ•  ๊ฐ€๋Šฅ์„ฑ์„ ๋‚ดํฌํ•˜๊ณ  ์žˆ๋‹ค.
[15] ๊ทธ๋ž˜๋„ ARM์—์„œ๋„ ์ฐธ์—ฌํ•˜๋‹ˆ ์†๋‹จ์€ ๊ธˆ๋ฌผ.
[16] ์˜ˆ๋ฅผ ๋“ค์–ด, AMD GPU/APU๋กœ ๋™์ž‘ํ•˜๋Š” ๋ณ‘๋ ฌ ์ปดํ“จํŒ… ํ”„๋กœ๊ทธ๋žจ์„ ๋งŒ๋“ค์—ˆ๋‹ค๋ฉด ์ด๊ฒƒ์ด 'ARM + POWER VR'๋กœ๋„ ํ”„๋กœ๊ทธ๋žจ ์ˆ˜์ •์—†์ด ๋Œ์•„๊ฐˆ ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.
[17] CUDA๋Š” ๋Œ€ํ‘œ์ ์ธ ํ์‡„ ํ”Œ๋žซํผ์ด๋‹ค. NVIDIA GPU๋กœ๋งŒ ๋Œ์•„๊ฐ€๋Š” ๋…€์„์ด๋‹ˆ...
[18] ๋Œ€์‹  GPU๊ฐ„ ํ†ต์‹ ์— ์จ๋จน๋Š” ๊ฑด ์ง€์žฅ ์—†๊ธฐ ๋•Œ๋ฌธ์— GeForce 20๋ถ€ํ„ฐ๋Š” SLI๋ฅผ ๋Œ€์ฒดํ•˜๋Š” ์‹์œผ๋กœ ์จ๋จน๊ณ  ์žˆ๋‹ค.
[19] AMD์—๋Š” ์นด๋ฆฌ์กฐ๊นŒ์ง€๋„ CPU์™€ GPU๊ฐ€ ๊ณต์œ ํ•˜๋Š” ์บ์‹œ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ์—†๋‹ค. ๊ทธ๋ž˜์„œ ํ•ด๋‹น ๊ธฐ๋Šฅ์ด ํ•„์š”ํ•œ AMD ํ›„์› HSA ์„ฑ๋Šฅ ์—ฐ๊ตฌ๋Š” HSA์™€ L3 ์บ์‹œ๋ฅผ ๋ชจ๋‘ ๊ฐ€์ง„ ๊ฐ€์ƒ์˜ APU๋ฅผ ์‹œ๋ฎฌ๋ ˆ์ด์…˜ํ•ด์„œ ์“ฐ๊ธฐ๋„ ํ•œ๋‹ค(์—ฐ๊ตฌ ๋‹น์‹œ์— ์ธํ…”์—์„œ๋Š” HSA๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š์•˜๋‹ค.).