๐Ÿ‘ฉ๐Ÿป‍๐Ÿ’ป Developer/ํ˜ผ๊ณต์ปด์šด_CS์ง€์‹

[ํ˜ผ๊ณต์ปด์šด] Chapter 05-2 ๋ช…๋ น์–ด ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ ๊ธฐ๋ฒ•

Junyung 2024. 4. 2. 11:58

๋ช…๋ น์–ด ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ ๊ธฐ๋ฒ• (ILP : Instruction - Level Parallelism)

: ๋ช…๋ น์–ด๋ฅผ ๋™์‹œ์— ์ฒ˜๋ฆฌํ•˜์—ฌ CPU๋ฅผ ํ•œ์‹œ๋„ ์‰ฌ์ง€ ์•Š๊ณ  ์ž‘๋™์‹œํ‚ค๋Š” ๋ฐฉ๋ฒ•

 

ILP ์˜ ์ข…๋ฅ˜ 

1. ๋ช…๋ น์–ด ํŒŒ์ดํ”„๋ผ์ด๋‹

2. ์Šˆํผ์Šค์นผ๋ผ

3. ๋น„ ์ˆœ์ฐจ์  ๋ช…๋ น์–ด ์ฒ˜๋ฆฌ 


๋ช…๋ น์–ด ํŒŒ์ดํ”„๋ผ์ธ 

[ ๋ช…๋ น์–ด ์ฒ˜๋ฆฌ ๊ณผ์ • ] 

1. Instruction Fetch (๋ช…๋ น์–ด ์ธ์ถœ) 

2. Instruction Decode (๋ช…๋ น์–ด ํ•ด์„)

3. Execute Instruction (๋ช…๋ น์–ด ์‹คํ–‰)

4. Write Back (๊ฒฐ๊ณผ ์ €์žฅ)

 [์ค‘์š”] 
: ๊ฐ™์€ ๋‹จ๊ณ„๊ฐ€ ๊ฒน์น˜์ง€ ์•Š๋Š”๋‹ค๋ฉด CPU๋Š” ๊ฐ ๋‹จ๊ณ„๋ฅผ ๋™์‹œ์— ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค.
์ฆ‰, CPU๋Š” ํ•œ ๋ช…๋ น์–ด๋ฅผ '์ธ์ถœ' ํ•˜๋Š” ๋™์•ˆ ๋‹ค๋ฅธ ๋ช…๋ น์–ด๋ฅผ '์‹คํ–‰' ํ•  ์ˆ˜ ์žˆ๊ณ , 
'์‹คํ–‰' ํ•˜๋Š” ๋™์•ˆ ์—ฐ์‚ฐ๊ฒฐ๊ณผ๋ฅผ '์ €์žฅ' ํ•  ์ˆ˜ ์žˆ๋‹ค. 

์ฆ‰, ๊ณต์žฅ ์ƒ์‚ฐ ๋ผ์ธ๊ณผ ๊ฐ™์ด ๋ช…๋ น์–ด๋“ค์„ ๋ช…๋ น์–ด ํŒŒ์ดํ”„๋ผ์ธ์— ๋„ฃ๊ณ  ๋™์‹œ์— ์ฒ˜๋ฆฌํ•˜๋Š” ๊ธฐ๋ฒ•์„ "๋ช…๋ น์–ด ํŒŒ์ดํ”„๋ผ์ด๋‹" ์ด๋ผ๊ณ  ํ•œ๋‹ค 

(= ๋™์‹œ์— ์—ฌ๋Ÿฌ๊ฐœ์˜ ๋ช…๋ น์–ด๋ฅผ ๊ฒน์ณ ์‹คํ–‰ํ•˜๋Š” ๊ธฐ๋ฒ•)

๋ช…๋ น์–ด ํŒŒ์ดํ”„๋ผ์ด๋‹

๋”ฐ๋ผ์„œ ๋ช…๋ น์–ด ํŒŒ์ดํ”„๋ผ์ด๋‹์€ ์„ฑ๋Šฅ ํ–ฅ์ƒ์˜ ๊ฒฐ๊ณผ๋ฅผ ๊ฐ€์ ธ์˜จ๋‹ค. 

ํ•˜์ง€๋งŒ, ํ•ญ์ƒ ์„ฑ๋Šฅํ–ฅ์ƒ์˜ ๊ฒฐ๊ณผ๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ๊ฒƒ์€ ์•„๋‹ˆ๋‹ค. 


ํŒŒ์ดํ”„๋ผ์ธ ์œ„ํ—˜

:ํŠน์ • ์ƒํ™ฉ์—์„œ ์„ฑ๋Šฅ ํ–ฅ์ƒ์— ์‹คํŒจํ•˜๋Š” ๊ฒฝ์šฐ 

 

1. ๋ฐ์ดํ„ฐ ์œ„ํ—˜ 

2. ์ œ์–ด ์œ„ํ—˜

3. ๊ตฌ์กฐ์  ์œ„ํ—˜

๋ฐ์ดํ„ฐ ์œ„ํ—˜

: ๋ช…๋ น์–ด ๊ฐ„ '๋ฐ์ดํ„ฐ ์˜์กด์„ฑ' ์— ์˜ํ•ด ๋ฐœ์ƒ

์ฆ‰, ์–ด๋–ค ๋ช…๋ น์–ด๋Š” ์ด์ „ ๋ช…๋ น์–ด๋ฅผ ๋๊นŒ์ง€ ์‹คํ–‰ํ•ด์•ผ ๋งŒ ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ๋ช…๋ น์–ด๊ฐ€ ์žˆ๋‹ค. 

ex) 
๋ช…๋ น์–ด 1 : R1 <- R2 + R3 // R2 + R3 ๊ฐ’์„ R1์— ์ €์žฅ
๋ช…๋ น์–ด 2 : R4 <- R1 + R5 // R1 + R5 ๊ฐ’์„ R4์— ์ €์žฅ

์ฆ‰, R4์˜ ๊ฐ’์„ ์•Œ๊ธฐ ์œ„ํ•ด์„œ๋Š” R1, ๋ช…๋ น์–ด 1์„ ๋ชจ๋‘ ์ฒ˜๋ฆฌ ํ•œ ํ›„ ๊ณ„์‚ฐํ•ด์ฃผ์–ด์•ผ ํ•œ๋‹ค. 

์ œ์–ด ์œ„ํ—˜

: ๋ถ„๊ธฐ ๋“ฑ์œผ๋กœ ์ธํ•œ 'ํ”„๋กœ๊ทธ๋žจ ์นด์šดํ„ฐ์˜ ๊ฐ‘์ž‘์Šค๋Ÿฌ์šด ๋ณ€ํ™”'์— ์˜ํ•ด ๋ฐœ์ƒํ•œ๋‹ค. 

"ํ”„๋กœ๊ทธ๋žจ ์นด์šดํ„ฐ" ๋Š” ํ˜„์žฌ ์‹คํ–‰ ์ค‘์ธ ๋ช…๋ น์–ด์˜ ๋‹ค์Œ ์ฃผ์†Œ๋ฅผ ๋ถˆ๋Ÿฌ์˜ค๋Š” ๊ฒƒ์ด๋‹ค. 

 

ํ•˜์ง€๋งŒ, ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰ ํ๋ฆ„์ด ๋ฐ”๋€Œ์–ด ๋ช…๋ น์–ด๊ฐ€ ์‹คํ–‰๋˜๋ฉฐ ํ”„๋กœ๊ทธ๋žจ ์นด์šดํ„ฐ์— ๋ณ€ํ™”๊ฐ€ ์ƒ๊ธฐ๊ฒŒ ๋˜๋ฉด ๋ฏธ๋ฆฌ ๊ฐ€์ ธ์™€ ์ฒ˜๋ฆฌ์ค‘์ด๋˜ ๋ช…๋ น์–ด๊ฐ€ ์“ธ๋ชจ ์—†์–ด์งˆ ๊ฒƒ์ด๋‹ค.

 

๋”ฐ๋ผ์„œ ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ๋ถ„๊ธฐ ์˜ˆ์ธก ์ด ํ•„์š”ํ•˜๋‹ค.

๊ตฌ์กฐ์  ์œ„ํ—˜ (=์ž์› ์œ„ํ—˜)

: ๋ช…๋ น์–ด๋“ค์„ ๊ฒน์ณ ์‹คํ–‰ํ•˜๋Š” ๊ณผ์ •์—์„œ ์„œ๋กœ ๋‹ค๋ฅธ ๋ช…๋ น์–ด๊ฐ€ ๋™์‹œ์— ALU, ๋ ˆ์ง€์Šคํ„ฐ ๋“ฑ๊ณผ ๊ฐ™์€ CPU๋ถ€ํ’ˆ์„ ์‚ฌ์šฉํ•˜๋ ค๊ณ  ํ•  ๋•Œ ๊ตฌ์กฐ์ (์ž์›) ์œ„ํ—˜์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค.


์Šˆํผ์Šค์นผ๋ผ 

= ์—ฌ๋Ÿฌ ๊ฐœ์˜ ํŒŒ์ดํ”„๋ผ์ธ (์ฆ‰, ํŒŒ์ดํ”„๋ผ์ธ์˜ ์ง‘ํ•ฉ)

์Šˆํผ์Šค์นผ๋ผ

์Šˆํผ์Šค์นผ๋ผ ํ”„๋กœ์„ธ์„œ (=์Šˆํผ์Šค์นผ๋ผ CPU)

์Šˆํผ์Šค์นผ๋ผ ํ”„๋กœ์„ธ์Šค๋Š” ์Šˆํผ์Šค์นผ๋ผ ๊ตฌ์กฐ๋กœ ๋ช…๋ น์–ด ์ฒ˜๋ฆฌ๊ฐ€ ๊ฐ€๋Šฅํ•œ CPU์ด๋‹ค. 

๋งค ํด๋Ÿญ ์ฃผ๊ธฐ๋งˆ๋‹ค ๋™์‹œ์— ์—ฌ๋Ÿฌ ๋ช…๋ น์–ด๋ฅผ ์ธ์ถœ, ์‹คํ–‰, ํ•ด์„ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค. 

  • ์ด๋ก ์  : ์Šˆํผ์Šค์นผ๋ผ ํ”„๋กœ์„ธ์„œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํŒŒ์ดํ”„๋ผ์ธ ๊ฐœ์ˆ˜์— ๋น„๋ก€ํ•˜์—ฌ ํ”„๋กœ๊ทธ๋žจ ์ฒ˜๋ฆฌ ์†๋„๊ฐ€ ๋นจ๋ผ์ง„๋‹ค. 
  • ์‹ค์งˆ์  : ์Šˆํผ์Šค์นผ๋ผ ํ”„๋กœ์„ธ์„œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํŒŒ์ดํ”„๋ผ์ธ ์œ„ํ—˜์ด ์ ์  ๋งŽ์•„์ง€๋ฉด์„œ ๋‹ค๋ฃจ๊ธฐ ๊นŒ๋‹ค๋กœ์›Œ์ง„๋‹ค. 

๋น„์ˆœ์ฐจ์  ๋ช…๋ น์–ด ์ฒ˜๋ฆฌ(OoOE : Out-of order Execution)

= "ํ•ฉ๋ฒ•์ ์ธ ์ƒˆ์น˜๊ธฐ" (<-> ์ˆœ์ฐจ์  ๋ช…๋ น์–ด ์ฒ˜๋ฆฌ : ์Šˆํผ์Šค์นผ๋ผ, ๋ช…๋ น์–ด ํŒŒ์ดํ”„๋ผ์ธ)

 

๋น„์ˆœ์ฐจ์  ๋ช…๋ น์–ด ์ฒ˜๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ  

: ํŒŒ์ดํ”„๋ผ์ธ ์œ„ํ—˜๊ณผ ๊ฐ™์€ ์˜ˆ์ƒ์น˜ ๋ชปํ•œ ๋ฌธ์ œ๋“ค๋กœ ์ธํ•ด ๋ช…๋ น์–ด๋Š” ๊ณง๋ฐ”๋กœ ์ฒ˜๋ฆฌ๋˜์ง€ ๋ชปํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋‹ค. 

๊ทธ๋ ‡๋‹ค๋ฉด, ์˜ˆ์ƒ์น˜ ๋ชปํ•œ ์ƒํ™ฉ์—์„œ ๋ช…๋ น์–ด ํŒŒ์ดํ”„๋ผ์ธ์€ ๋ฉˆ์ถฐ ๋ฒ„๋ฆฌ๊ฒŒ ๋œ๋‹ค. 

 

๋”ฐ๋ผ์„œ, ๋น„์ˆœ์ฐจ์  ๋ช…๋ น์–ด ์ฒ˜๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ˆœ์„œ๋ฅผ ๋ฐ”๊ฟ” ์‹คํ–‰ํ•ด๋„ ๋ฌด๋ฐฉํ•œ ๋ช…๋ น์–ด๋“ค์„ ๋จผ์ € ์‹คํ–‰ํ•˜์—ฌ ๋ช…๋ น์–ด ํŒŒ์ดํ”„๋ผ์ธ์ด ๋ฉˆ์ถ”๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.


CPU ํŒ๋‹จ ๊ธฐ์ค€ 

์ฆ‰, CPU๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ, ์ข€ ๋” ์„ฑ๋Šฅ์„ ๊ณ ๋ คํ•˜์—ฌ ์„ ํƒํ•ด์„œ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค. 

  • ๋ช…๋ น์–ด๋“ค์ด ์–ด๋–ค ๋ช…๋ น์–ด์™€ ๋ฐ์ดํ„ฐ ์˜์กด์„ฑ์„ ๊ฐ€์ง€๊ณ  ์žˆ๋Š”๊ฐ€?
  • ์ˆœ์„œ๋ฅผ ๋ฐ”๊ฟ” ์‹คํ–‰ ํ•  ์ˆ˜ ์žˆ๋Š” ๋ช…๋ น์–ด์—๋Š” ์–ด๋–ค ๊ฒƒ๋“ค์ด ์žˆ๋Š”๊ฐ€? 

์ด ๋‘๊ฐ€์ง€ ์งˆ๋ฌธ์„ ํ†ตํ•ด ๋” ๋‚˜์€ CPU๋ฅผ ์„ ํƒํ•ด์„œ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค