๐Ÿชœ Computer System : 4. ํ”„๋กœ์„ธ์„œ ๊ตฌ์กฐ_part4

A Yeon Jangยท2025๋…„ 8์›” 9์ผ

โš ๏ธ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ

ํ”„๋กœ์„ธ์„œ์˜ ๋‹ค์–‘ํ•œ ๋™์ž‘์€ ์˜ˆ์™ธ์ ์ธ ํ๋ฆ„์„ ๋ฐœ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ์œผ๋ฉฐ,
์˜ˆ์™ธ๋“ค์€ ๋‚ด๋ถ€์ ์œผ๋กœ ๋ฐœ์ƒํ•˜๊ฑฐ๋‚˜ ์™ธ๋ถ€์ ์œผ๋กœ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค.

๋‚ด๋ถ€์ ์ธ ์˜ˆ์™ธ ์›์ธ

  1. halt ์ธ์ŠคํŠธ๋Ÿญ์…˜์— ์˜ํ•œ ์˜ˆ์™ธ
  2. ์ธ์ŠคํŠธ๋Ÿญ์…˜๊ณผ ํ•จ์ˆ˜์ฝ”๋“œ์˜ ์ž˜๋ชป๋œ ์กฐํ•ฉ
  3. ์ธ์ŠคํŠธ๋Ÿญ์…˜ ์ฒ˜๋ฆฌ ์ค‘ ์œ ํšจํ•˜์ง€ ์•Š์€ ์ฃผ์†Œ์— ์ ‘๊ทผ

ํŒŒ์ดํ”„๋ผ์ธ์„ ์‚ฌ์šฉํ•œ ์‹œ์Šคํ…œ์—์„œ ์˜ˆ์™ธ์ฒ˜๋ฆฌ๋Š” ์—ฌ๋Ÿฌ๊ฐ€์ง€ ๋ฏธ๋ฌ˜ํ•œ ๋ถ€๋ถ„๋“ค๊ณผ ๊ด€๊ณ„๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋Š”๋ฐ, ๊ทธ ๋ถ€๋ถ„์— ๋Œ€ํ•ด์„œ ์‚ดํŽด๋ณด๋ ค๊ณ  ํ•œ๋‹ค.

๐Ÿค” ์˜ˆ์™ธ ์ฒ˜๋ฆฌ์˜ ์„ธ ๊ฐ€์ง€ ๋ฏธ๋ฌ˜ํ•œ ๋ฌธ์ œ

๐Ÿ“ฆ ๋‹ค์ค‘ ์˜ˆ์™ธ ๋ฐœ์ƒ

  • ์˜ˆ์™ธ๊ฐ€ ๋™์‹œ์— ๋‹ค์ˆ˜์˜ ์ธ์ŠคํŠธ๋Ÿญ์…˜์—์„œ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Œ.
  • ๊ทœ์น™: ํŒŒ์ดํ”„๋ผ์ธ์—์„œ ๊ฐ€์žฅ ๋’ค(์ง„ํ–‰์ด ์•ž์„ ) ๋‹จ๊ณ„์˜ ์˜ˆ์™ธ๊ฐ€ ์šฐ์„ ์ ์œผ๋กœ ์ฒ˜๋ฆฌ๋œ๋‹ค.
  • ์˜ˆ:
    • Fetch ๋‹จ๊ณ„: halt ๋ช…๋ น โ†’ halt ์˜ˆ์™ธ
    • Memory ๋‹จ๊ณ„: ์ฃผ์†Œ ๋ฒ”์œ„ ์ดˆ๊ณผ ์˜ˆ์™ธ
    • ๋ณด๊ณ  ๋Œ€์ƒ: Memory ๋‹จ๊ณ„์˜ ์˜ˆ์™ธ๋งŒ ์šด์˜์ฒด์ œ์— ๋ณด๊ณ 

๐Ÿ”„ ๋ถ„๊ธฐ ์˜ˆ์ธก๊ณผ ์ž˜๋ชป๋œ ์˜ˆ์™ธ ๋ฐœ์ƒ

  • ํŒŒ์ดํ”„๋ผ์ธ์ด ๋ถ„๊ธฐ๋ฅผ ์‹คํ–‰ํ•  ๊ฒƒ์ด๋ผ๊ณ  ์˜ˆ์ธกํ•˜๋ฉด,
    ํ•ด๋‹น ๋ถ„๊ธฐ ํƒ€๊นƒ ์ฃผ์†Œ์˜ ๋ช…๋ น์„ Fetchํ•œ๋‹ค.
  • ๊ทœ์น™: ํŒŒ์ดํ”„๋ผ์ธ ์ œ์–ด๋กœ์ง์€ ์ด ์ธ์ŠคํŠธ๋Ÿญ์…˜์„ ์ทจ์†Œํ•œ๋‹ค.

๐Ÿชœ ๋‹ค๋‹จ๊ณ„ ์ƒํƒœ ๊ฐฑ์‹  ๋ฌธ์ œ

  • ํŒŒ์ดํ”„๋ผ์ธ์€ ์‹œ์Šคํ…œ ์ƒํƒœ๋ฅผ ์—ฌ๋Ÿฌ ๋‹จ๊ณ„์—์„œ ๊ฐฑ์‹ ํ•œ๋‹ค.
  • ๋ฌธ์ œ: ์˜ˆ์™ธ ๋ฐœ์ƒ ๋ช…๋ น์–ด ์ดํ›„ ๋ช…๋ น์ด, ์˜ˆ์™ธ ํ™•์ • ์ „ ์ผ๋ถ€ ์ƒํƒœ๋ฅผ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋‹ค.

์˜ˆ์‹œ ์ฝ”๋“œ:

1  irmovq $1, %rax           # RAX โ† 1
2  xorq %rsp, %rsp           # RSP โ† 0, CC โ† 100
3  pushq %rax                # ์Šคํƒ ํฌ์ธํ„ฐ ๊ฐ์†Œ โ†’ 0xfffffffffffffff8 โ†’ ์ฃผ์†Œ ์˜ˆ์™ธ(์‚ฌ์šฉ์ž๊ฐ€ ์ ‘๊ทผํ•  ์ˆ˜ ์—†๋Š” ์ฃผ์†Œ๋กœ ๊ฐ€์ •)
4  addq %rax, %rax           # (์‹คํ–‰๋˜๋ฉด ์•ˆ ๋จ) CC โ† 000
  • pushq โ†’ ๋ฉ”๋ชจ๋ฆฌ ๋‹จ๊ณ„์—์„œ ์ฃผ์†Œ ์˜ˆ์™ธ ๋ฐœ์ƒ.
  • ๊ฐ™์€ ์‚ฌ์ดํด addq โ†’ ์‹คํ–‰ ๋‹จ๊ณ„์—์„œ CC ๋ณ€๊ฒฝ ์‹œ๋„.
  • ๋ฌธ์ œ: ์˜ˆ์™ธ ์ดํ›„์˜ ๋ช…๋ น์ด ํ”„๋กœ๊ทธ๋ž˜๋จธ ๊ฐ€์‹œ ์ƒํƒœ๋ฅผ ๋ณ€๊ฒฝํ•จ.

์œ„์—์„œ ๋งํ•œ ์˜ˆ์™ธ๋“ค์— ๋Œ€ํ•ด์„œ ์–ด๋– ํ•œ ๋ฐฉ๋ฒ•์œผ๋กœ ์šฐ๋ฆฌ๊ฐ€ ์–ธ๊ธ‰ํ•œ ๋ฏธ๋ฌ˜ํ•œ ์ ๋“ค์„ ์ฒ˜๋ฆฌํ•˜๋Š”์ง€ ์ƒ๊ฐํ•ด๋ณด์ž

๐Ÿ’Š ์˜ˆ์™ธ ์ฒ˜๋ฆฌ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•

โ˜‘๏ธ ์ƒํƒœ์ฝ”๋“œ ํ•„๋“œ

์ƒํƒœ์ฝ”๋“œ(stat) ํ•„๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์ž

  • ๊ฐ ํŒŒ์ดํ”„๋ผ์ธ ๋ ˆ์ง€์Šคํ„ฐ์— ์ƒํƒœ ์ฝ”๋“œ(stat) ํ•„๋“œ ์ถ”๊ฐ€
  • ์˜ˆ์™ธ ๋ฐœ์ƒ ์‹œ, ํ•ด๋‹น ๋ช…๋ น์–ด์˜ stat์— ์˜ˆ์™ธ ์ข…๋ฅ˜ ๊ธฐ๋ก
  • ์ƒํƒœ ์ •๋ณด๋Š” Write-back ๋‹จ๊ณ„๊นŒ์ง€ ์ „ํŒŒ
  • Write-back ๋‹จ๊ณ„์—์„œ ์˜ˆ์™ธ ๊ฐ์ง€ โ†’ ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰ ์ค‘๋‹จ, ์ƒํƒœ ์ฝ”๋“œ ๊ธฐ๋ก

โ˜‘๏ธ ์ƒํƒœ ๋ณ€๊ฒฝ ์–ต์ œ ๊ทœ์น™

์˜ˆ์™ธ ๋ฐœ์ƒ ํ›„, ๋’ค์˜ ๋ช…๋ น์–ด๋Š” ํ”„๋กœ๊ทธ๋ž˜๋จธ ๊ฐ€์‹œ ์ƒํƒœ๋ฅผ ๋ณ€๊ฒฝํ•ด์„œ๋Š” ์•ˆ๋œ๋‹ค.

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

๐Ÿ“š ๋™์ž‘ ๋ฐฉ์‹ ์ •๋ฆฌ

  1. ์˜ˆ์™ธ ์ƒํƒœ๋Š” ๋ฐœ์ƒํ•œ ๋‹จ๊ณ„์—์„œ stat์— ์ €์žฅ.
  2. ํŒŒ์ดํ”„๋ผ์ธ ํ๋ฆ„์„ ๋”ฐ๋ผ Write-back๊นŒ์ง€ ์ „๋‹ฌ.
  3. Write-back ๋‹จ๊ณ„์—์„œ ๊ฐ์ง€๋˜๋ฉด ์‹คํ–‰ ์ค‘๋‹จ ๋ฐ ์ƒํƒœ ์ฝ”๋“œ ๋ณด๊ณ 
  4. ์˜ˆ์™ธ ์ดํ›„์˜ ๋ช…๋ น์€ ์ƒํƒœ ๋ณ€๊ฒฝ ๋ถˆ๊ฐ€
  5. ๋ถ„๊ธฐ ์˜ค์˜ˆ์ธก ์ทจ์†Œ ์‹œ, ์˜ˆ์™ธ ์ƒํƒœ๋„ ๊ฐ™์ด ํ๊ธฐ
  6. ๋™์‹œ์— ์—ฌ๋Ÿฌ ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด, ๊ฐ€์žฅ ์ง„ํ–‰์ด ์•ž์„  ๋ช…๋ น ์˜ˆ์™ธ๋งŒ ๋ณด๊ณ .

๐Ÿ› ๏ธ PIPE ๋‹จ๊ณ„์˜ ๊ตฌํ˜„

์ด ๋ถ€๋ถ„์—์„œ๋Š” Y86-64 PIPE ํ”„๋กœ์„ธ์„œ๊ฐ€ ์‹ค์ œ๋กœ ์–ด๋–ป๊ฒŒ ๋ช…๋ น์–ด๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š”์ง€,
๊ฐ ๋‹จ๊ณ„๋ณ„(Fetch โ†’ Decode โ†’ Execute โ†’ Memory โ†’ Write back) ์—ญํ• ๊ณผ ๋ฐ์ดํ„ฐ ํ๋ฆ„, ๊ทธ๋ฆฌ๊ณ  ์šฐํšŒ๋ง(Forwarding), ์Šคํ†จ/๋ฒ„๋ธ” ์ œ์–ด, ์˜ˆ์™ธ ์ฒ˜๋ฆฌ, ์„ฑ๋Šฅ ๋ถ„์„ ๋“ฑ์„ ํ•˜๋“œ์›จ์–ด ์ œ์–ด ๊ด€์ ์—์„œ ์‚ดํŽด๋ณด๋ ค๊ณ  ํ•œ๋‹ค.

โ˜‘๏ธ Fetch ๋‹จ๊ณ„(F)

  • ํ•  ์ผ: ๋ฉ”๋ชจ๋ฆฌ์—์„œ ๋ช…๋ น ๋ฐ”์ดํŠธ ์ฝ๊ธฐ โ†’ ๋ถ„ํ•ด(Split/Align) โ†’ ํ•„์š”์‹œ rA/rB, valC, valP ์‚ฐ์ถœ โ†’ ์˜ˆ์ธก PC ๊ณ„์‚ฐ.
  • ํ•„์š” ๋ฐ”์ดํŠธ ํŒ๋‹จ: Need_regids, Need_valC (๋ช…๋ น ์ข…๋ฅ˜๋ณ„)

โ˜‘๏ธ Decode ๋‹จ๊ณ„(D)

  • ํ•  ์ผ: ์†Œ์Šค/๋ชฉ์  ๋ ˆ์ง€์Šคํ„ฐ ๊ฒฐ์ •(d_srcA, d_srcB, d_dstE, d_dstM) โ†’ ๋ ˆ์ง€์Šคํ„ฐ ํŒŒ์ผ/์šฐํšŒ๋ง์—์„œ ์ตœ์‹  ๊ฐ’ ์„ ํƒ โ†’ d_valA, d_valB ์ƒ์„ฑ.

๐Ÿงฉ Sel+Fwd A ๋ธ”๋ก๊ณผ Forwarding ์šฐ์„ ์ˆœ์œ„

๐Ÿ’ก ํšŒ๋กœ๊ฐ€ ํ•˜๋Š” ์ผ

๊ทธ๋ฆผ ์† Sel+Fwd A ๋ธ”๋ก์€ ๋‘ ๊ฐ€์ง€ ์ผ์„ ๋™์‹œ์— ํ•œ๋‹ค.
1. valP + valA ๋ณ‘ํ•ฉ

  • valP : ๋‹ค์Œ ๋ช…๋ น์–ด ์ฃผ์†Œ(PC + ๋ช…๋ น์–ด ๊ธธ์ด)
  • valA : ๋ช…๋ น์–ด ์‹คํ–‰์— ํ•„์š”ํ•œ ๋ ˆ์ง€์Šคํ„ฐ ๊ฐ’
  • CALL, JXX ๊ฐ™์€ ํŠน์ • ๋ช…๋ น๋งŒ valP๊ฐ€ ํ•„์š”ํ•˜๋‹ˆ๊นŒ, ๋‚˜๋จธ์ง€ ๊ฒฝ์šฐ๋Š” valA๋กœ ๋Œ€์ฒดํ•ด์„œ ์ „๋‹ฌ
    โ†’ ํŒŒ์ดํ”„๋ผ์ธ ๋ ˆ์ง€์Šคํ„ฐ์— ์ €์žฅํ•ด์•ผ ํ•˜๋Š” ์ •๋ณด(์ƒํƒœ)๋ฅผ ์ค„์ž„
  1. Forwarding(์šฐํšŒ, ๋ฐ์ดํ„ฐ ์ „๋‹ฌ)
    • ์•„์ง ๋ ˆ์ง€์Šคํ„ฐ ํŒŒ์ผ์— ๊ธฐ๋ก๋˜์ง€ ์•Š์€ ์ตœ์‹  ๊ฐ’์„, ๋’ค์˜ ๋ช…๋ น์ด ๋ฐ”๋กœ ๊ฐ€์ ธ๋‹ค ์“ฐ๊ฒŒ ํ•จ
    • ์ด์œ  : ํŒŒ์ดํ”„๋ผ์ธ์—์„  ๋ช…๋ น๋“ค์ด ๊ฒน์ณ ์‹คํ–‰๋˜๊ธฐ ๋•Œ๋ฌธ์—, ๋’ค์˜ ๋ช…๋ น์ด ๊ฐฑ์‹ ๋˜๊ธฐ ์ „ ๊ฐ’์„ ์ฝ๋Š” ๊ฑธ ๋ฐฉ์ง€ํ•ด์•ผ ํ•จ

๐Ÿ’ฌ ์šฐ์„ ์ˆœ์œ„๊ฐ€ ํ•„์š”ํ•œ ์ด์œ 

Forwarding ๊ฒฝ๋กœ๋Š” ์—ฌ๋Ÿฌ ๊ตฐ๋ฐ์—์„œ ๊ฐ’์ด ์˜ฌ ์ˆ˜ ์žˆ์Œ.

  • EX ๋‹จ๊ณ„ (ALU ๊ณ„์‚ฐ ๊ฒฐ๊ณผ)
  • MEM ๋‹จ๊ณ„ (๋ฉ”๋ชจ๋ฆฌ ์ฝ๊ธฐ ๊ฒฐ๊ณผ)
  • WB ๋‹จ๊ณ„ (๋ ˆ์ง€์Šคํ„ฐ ์“ฐ๊ธฐ ์ง์ „ ๊ฒฐ๊ณผ)

๊ฐ™์€ ๋ ˆ์ง€์Šคํ„ฐ๋ฅผ ์—ฌ๋Ÿฌ ๋ช…๋ น์–ด๊ฐ€ ๊ฐฑ์‹ ํ•˜๋ ค๊ณ  ํ•  ๋•Œ,
ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰ ์ˆœ์„œ์ƒ ๊ฐ€์žฅ ๋‚˜์ค‘์— ์‹คํ–‰๋  ๋ช…๋ น์–ด์˜ ๊ฐ’์„ ์„ ํƒํ•ด์•ผ ํ•œ๋‹ค.
ํŒŒ์ดํ”„๋ผ์ธ์—์„œ๋Š” ์ด ๊ฐ’์ด ๊ฐ€์žฅ ์•ž์ชฝ(earliest) ๋‹จ๊ณ„์— ์œ„์น˜ํ•ด ์žˆ๋‹ค.

์ด์œ : ํ”„๋กœ๊ทธ๋žจ ์ˆœ์„œ์—์„œ ๋” ๋‚˜์ค‘์— ์œ„์น˜ํ•œ ๋ช…๋ น์–ด๊ฐ€ ๊ฒฐ๊ตญ ์ตœ์ข…์ ์œผ๋กœ ๋ ˆ์ง€์Šคํ„ฐ๋ฅผ ๋ฎ์–ด์“ฐ๊ฒŒ ๋˜๋ฏ€๋กœ, ๊ทธ ๊ฐ’์„ ๋ฏธ๋ฆฌ ์ „๋‹ฌํ•ด์•ผ ํ•œ๋‹ค.

์˜ˆ) E ๋‹จ๊ณ„์— ์žˆ๋‹ค๋ฉด, ๊ฐ™์€ ์‚ฌ์ดํด์—์„œ M ๋‹จ๊ณ„๋‚˜ W ๋‹จ๊ณ„์— ์žˆ๋Š” ๊ฐ’๋ณด๋‹ค โ€œ์ตœ์ข…๊ฐ’โ€์ด๋ฏ€๋กœ ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋” ๋†’๋‹ค.

๐Ÿ”ข ์‹ค์ œ ์šฐ์„ ์ˆœ์œ„

์šฐ์„ ์ˆœ์œ„์กฐ๊ฑด์‚ฌ์šฉ ๊ฐ’์ถœ์ฒ˜(Stage)์ด์œ 
1E_dstE == d_srce_valEExecute ๋‹จ๊ณ„ ALU ๊ฒฐ๊ณผ๊ฐ€์žฅ ์ตœ์‹  ๊ฐ’์ด Execute ๋‹จ๊ณ„์—์„œ ๋ฐ”๋กœ ๋‚˜์™”๊ธฐ ๋•Œ๋ฌธ์—, ๋ฉ”๋ชจ๋ฆฌยท๋ ˆ์ง€์Šคํ„ฐ์— ๊ธฐ๋ก๋˜๊ธฐ ์ „์ด๋ผ๋„ ์ด ๊ฐ’์„ ์“ฐ๋ฉด ์ง€์—ฐ ์—†์ด ์ตœ์‹  ๊ฒฐ๊ณผ ์‚ฌ์šฉ ๊ฐ€๋Šฅ
2M_dstM == d_srcm_valMMemory ๋‹จ๊ณ„์—์„œ ์ฝ์€ ๋ฉ”๋ชจ๋ฆฌ ๊ฐ’Memory ๋‹จ๊ณ„์—์„œ ๋ฉ”๋ชจ๋ฆฌ ์ฝ๊ธฐ(load)๋กœ ์–ป์€ ๊ฐ’์ด๋ฏ€๋กœ, ์ด ์‹œ์ ์—์„œ๋งŒ ์–ป์„ ์ˆ˜ ์žˆ๋Š” ์ตœ์‹  ๋ฐ์ดํ„ฐ
3M_dstE == d_srcM_valEMemory ๋‹จ๊ณ„์—์„œ ALU ๊ฒฐ๊ณผExecute์—์„œ ๋‚˜์˜จ ๊ฐ’์ด์ง€๋งŒ ์ง€๊ธˆ Memory ๋‹จ๊ณ„์— ์žˆ์œผ๋ฏ€๋กœ, 1๋ฒˆ๋ณด๋‹ค ํ•œ ์‚ฌ์ดํด ๋Šฆ์Œ
4W_dstM == d_srcW_valMWrite-back ๋‹จ๊ณ„์—์„œ ๋ฉ”๋ชจ๋ฆฌ ๊ฐ’๋ฉ”๋ชจ๋ฆฌ์—์„œ ์ฝ์–ด์„œ ์ด์ œ ๋ ˆ์ง€์Šคํ„ฐ์— ๊ธฐ๋ก ์ง์ „์ธ ๊ฐ’. ์ด์ „ ๋‹จ๊ณ„๋ณด๋‹ค ํ•œ ์‚ฌ์ดํด ๋” ์ง€๋‚œ ๊ฐ’
5W_dstE == d_srcW_valEWrite-back ๋‹จ๊ณ„์—์„œ ALU ๊ฒฐ๊ณผALU ๊ณ„์‚ฐ ๊ฒฐ๊ณผ๋ฅผ ๋ ˆ์ง€์Šคํ„ฐ์— ๊ธฐ๋ก ์ง์ „. ๊ฐ€์žฅ ์˜ค๋ž˜๋œ ๊ฐ’์ด๋ฏ€๋กœ ์šฐ์„ ์ˆœ์œ„ ๊ฐ€์žฅ ๋‚ฎ์Œ
6๊ทธ ์™ธd_rvalARegister File์œ„ ๋ชจ๋“  ๊ฒฝ์šฐ์— ํ•ด๋‹น ์•ˆ ๋  ๋•Œ๋งŒ ๋ ˆ์ง€์Šคํ„ฐ ํŒŒ์ผ ๊ฐ’ ์‚ฌ์šฉ

์˜ˆ์‹œ) E_dstE == d_src : Execute ๋‹จ๊ณ„์— ์žˆ๋Š” ๋ช…๋ น์–ด์˜ ๋ชฉ์ ์ง€ ๋ ˆ์ง€์Šคํ„ฐ(E_dstE)๊ฐ€, Decode ๋‹จ๊ณ„์—์„œ ์ฝ์œผ๋ ค๋Š” ์†Œ์Šค ๋ ˆ์ง€์Šคํ„ฐ์™€ ๊ฐ™์œผ๋‹ˆ๊นŒ Execute๊ฒฐ๊ณผ์ธ e_valE์„ ๊ฐ–๋‹ค ์‚ฌ์šฉํ•ด๋„ ๋œ๋‹ค๋Š” ๋œป


โ˜‘๏ธ Execute ๋‹จ๊ณ„(E)

  • ํ•  ์ผ:
    • aluA/aluB ์„ ํƒ โ†’ ALU ์—ฐ์‚ฐ(alufun) โ†’ e_valE ์ƒ์„ฑ
    • ๋ถ„๊ธฐ ํŒ๋‹จ(e_Cnd)
    • ํ•„์š” ์‹œ CC ๊ฐฑ์‹ (set_cc) : m_stat, W_stat ์ž…๋ ฅ์„ ์‚ฌ์šฉํ•ด ๋ฉ”๋ชจ๋ฆฌ ๋‹จ๊ณ„๋‚˜ Write-back ๋‹จ๊ณ„์—์„œ ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•œ ๊ฒฝ์šฐ CC๋ฅผ ์—…๋ฐ์ดํŠธํ•˜์ง€ ์•Š๋„๋ก ํ•จ
  • ๋ถ„๊ธฐ ํŒ๋‹จ: ์กฐ๊ฑด ์ฝ”๋“œ(CC) ๊ธฐ๋ฐ˜(์˜ˆ: ZF, SF, OF), cmovXX/jXX์— ์‚ฌ์šฉ

โ˜‘๏ธ Memory ๋‹จ๊ณ„(M)

  • ํ•  ์ผ: ๋ฉ”๋ชจ๋ฆฌ ์ฝ๊ธฐ/์“ฐ๊ธฐ, ์ฃผ์†Œ ์˜ˆ์™ธ ๊ฐ์ง€
  • Mem.data ์‚ญ์ œ : Sel+Fwd A ๋ธ”๋ก์— ์˜ํ•ด์„œ ์ฒ˜๋ฆฌ๋˜๋ฏ€๋กœ ํ•„์š” ์—†์–ด์ง

โ˜‘๏ธ Write back ๋‹จ๊ณ„(W)

  • ํ•  ์ผ: ๋ ˆ์ง€์Šคํ„ฐ ํŒŒ์ผ์— ๊ฒฐ๊ณผ ์“ฐ๊ธฐ
    • W_dstE := W_valE, W_dstM := W_valM
  • ์˜ˆ์™ธ ์‹œ: ์“ฐ๊ธฐ ๊ธˆ์ง€(์ •๋ฐ€ ์˜ˆ์™ธ ๋ณด์žฅ).

๐Ÿšฆ ํŒŒ์ดํ”„๋ผ์ธ ์ œ์–ด ๋กœ์ง

์ด์ œ ๋งˆ์ง€๋ง‰์œผ๋กœ ํŒŒ์ดํ”„๋ผ์ธ ์ œ์–ด ๋กœ์ง๋งŒ ๋งŒ๋“ค๋ฉด PIPE ์„ค๊ณ„๊ฐ€ ๋๋‚˜๋Š”๋ฐ
์ด ๋กœ์ง์€ ๋ฐ์ดํ„ฐ ํฌ์›Œ๋”ฉ์ด๋‚˜ ๋ถ„๊ธฐ ์˜ˆ์ธก์œผ๋กœ๋Š” ํ•ด๊ฒฐํ•  ์ˆ˜ ์—†๋Š” ๋„ค ๊ฐ€์ง€ ์ œ์–ด ์ƒํ™ฉ์„ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ๊ฒƒ์ด๋‹ค.

๐Ÿ’ญ ์ œ์–ด ์ƒํ™ฉ

  1. Load/use ํ•ด์ €๋“œ

    • ๋ฉ”๋ชจ๋ฆฌ์—์„œ ๊ฐ’์„ ์ฝ๋Š” ๋ช…๋ น๊ณผ, ๊ทธ ๊ฐ’์„ ๋ฐ”๋กœ ์‚ฌ์šฉํ•˜๋Š” ๋‹ค์Œ ๋ช…๋ น ์‚ฌ์ด์— 1 ์‚ฌ์ดํด ์Šคํ†จ
  2. ret ์ฒ˜๋ฆฌ

    • ret ๋ช…๋ น์ด Write-back ๋‹จ๊ณ„์— ๋„๋‹ฌํ•  ๋•Œ๊นŒ์ง€ ํŒŒ์ดํ”„๋ผ์ธ ์ •์ง€
  3. ๋ถ„๊ธฐ ์˜ˆ์ธก ์‹คํŒจ

    • ์ž˜๋ชป๋œ ๋ถ„๊ธฐ๊ฐ€ ํ™•์ธ๋˜๋ฉด ์ด๋ฏธ ํŒŒ์ดํ”„๋ผ์ธ์— ๋“ค์–ด๊ฐ„ ์ž˜๋ชป๋œ ๋ช…๋ น๋“ค์„ ์ทจ์†Œํ•˜๊ณ , ์˜ฌ๋ฐ”๋ฅธ ๋ช…๋ น๋ถ€ํ„ฐ ๋‹ค์‹œ ๊ฐ€์ ธ์˜จ๋‹ค.
  4. ์˜ˆ์™ธ ๋ฐœ์ƒ

    • ์˜ˆ์™ธ๋ฅผ ๋ฐœ์ƒ์‹œํ‚จ ๋ช…๋ น ์ดํ›„์˜ ๋ช…๋ น์ด ํ”„๋กœ๊ทธ๋žจ ์ƒํƒœ๋ฅผ ๋ณ€๊ฒฝํ•˜์ง€ ๋ชปํ•˜๊ฒŒ ํ•˜๊ณ ,
      ํ•ด๋‹น ๋ช…๋ น์ด Write-back ๋‹จ๊ณ„์— ๋„๋‹ฌํ•˜๋ฉด ์‹คํ–‰์„ ์ค‘์ง€ํ•ด์•ผ ํ•œ๋‹ค.

ํŠน์ˆ˜ ์ œ์–ด ์ƒํ™ฉ ์ฒ˜๋ฆฌ ๋ฐฉ๋ฒ•

โ˜‘๏ธ Load/use ํ•ด์ €๋“œ

  • ํ•ด๋‹น: mrmovq, popq (๋ฉ”๋ชจ๋ฆฌ ์ฝ๊ธฐ) ๋ช…๋ น
  • ์กฐ๊ฑด:
    1. ํ•ด๋‹น ๋ช…๋ น์ด Execute ๋‹จ๊ณ„์— ์žˆ์Œ
    2. ๋‹ค์Œ ๋ช…๋ น์ด ๊ฐ™์€ ๋ ˆ์ง€์Šคํ„ฐ ๊ฐ’์„ ํ•„์š”๋กœ ํ•จ
  • ์ฒ˜๋ฆฌ:
    • Decode ๋‹จ๊ณ„์˜ ๋‘ ๋ฒˆ์งธ ๋ช…๋ น ๋Œ€๊ธฐ (ํŒŒ์ดํ”„๋ผ์ธ ๋ ˆ์ง€์Šคํ„ฐ D ๊ณ ์ •)
    • ๋‹ค์Œ ์‚ฌ์ดํด์— Execute ๋‹จ๊ณ„์— ๋ฒ„๋ธ” ์‚ฝ์ž…
    • Fetch ๋‹จ๊ณ„(F)๋„ ๊ณ ์ •ํ•ด ๋™์ผ ๋ช…๋ น์„ ๋‹ค์‹œ ๊ฐ€์ ธ์˜ค๊ฒŒ ํ•จ
    • ์ดํ›„ ํฌ์›Œ๋”ฉ ๋กœ์ง์œผ๋กœ ํ•ด์ €๋“œ ํ•ด๊ฒฐ

โ˜‘๏ธ ret ์ฒ˜๋ฆฌ

  • 3 ์‚ฌ์ดํด ๋™์•ˆ ์ •์ง€
  • ret์ด Memory ๋‹จ๊ณ„์—์„œ ๋ฐ˜ํ™˜ ์ฃผ์†Œ๋ฅผ ์ฝ์„ ๋•Œ๊นŒ์ง€ Fetch ๋‹จ๊ณ„๊ฐ€ ์ •์ƒ์ ์œผ๋กœ ์ง„ํ–‰๋˜์ง€ ์•Š์Œ
  • Decode ๋‹จ๊ณ„์— ๋ฒ„๋ธ” ์‚ฝ์ž… โ†’ ์ž˜๋ชป๋œ ๋ช…๋ น์ด ์‹คํ–‰๋˜์ง€ ์•Š๋„๋ก ํ•จ
  • ๋ฐ˜ํ™˜ ์ฃผ์†Œ ํ™•๋ณด ํ›„ ์˜ฌ๋ฐ”๋ฅธ ๋ช…๋ น๋ถ€ํ„ฐ Fetch ์žฌ๊ฐœ

โ˜‘๏ธ ๋ถ„๊ธฐ ์˜ˆ์ธก ์‹คํŒจ

  • ๋ถ„๊ธฐ ๊ฒฐ๊ณผ๋Š” Execute ๋‹จ๊ณ„์—์„œ ํ™•์ธ๋จ
  • ์ž˜๋ชป๋œ ๋ช…๋ น์„ Decode/Execute ๋‹จ๊ณ„์—์„œ ๋ฒ„๋ธ”๋กœ ๊ต์ฒด
  • ์˜ฌ๋ฐ”๋ฅธ ์ฃผ์†Œ๋กœ Fetch ์žฌ์‹œ์ž‘

์˜ˆ์™ธ ์ฒ˜๋ฆฌ

  • ๊ฐ ํŒŒ์ดํ”„๋ผ์ธ ๋ ˆ์ง€์Šคํ„ฐ์—์„œ ๋ช…๋ น์˜ ์ƒํƒœ ์ฝ”๋“œ๋ฅผ ์ถ”์ 
  • ์˜ˆ์™ธ ์‹œ:
    1. Memory ๋˜๋Š” Write-back ๋‹จ๊ณ„์—์„œ ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด CC ๊ฐฑ์‹  ๋น„ํ™œ์„ฑํ™” (set_cc = 0)
    2. Memory ๋‹จ๊ณ„์— ๋ฒ„๋ธ” ์‚ฝ์ž… โ†’ ๋ฉ”๋ชจ๋ฆฌ ์“ฐ๊ธฐ ๋ฐฉ์ง€
    3. Write-back ๋‹จ๊ณ„ ์ •์ง€ โ†’ ํŒŒ์ดํ”„๋ผ์ธ ์ „์ฒด ์ค‘๋‹จ

0๊ฐœ์˜ ๋Œ“๊ธ€