Skip to main content
  1. Posts/
  2. Today I Learned/

CSAPP 4.3 Sequential Y86-64 Implementations

·983 words·5 mins
Jiho Kim
Author
Jiho Kim
๋‹ฌ๋ ค ๋˜ ๋‹ฌ๋ ค

๐Ÿ“ ์ƒ์„ธ ์ •๋ฆฌ
#

  • ์ด์ œ ์ˆœ์ฐจ์  ํ”„๋กœ์„ธ์„œ (SEQ)๋ฅผ ๋จผ์ € ๋งŒ๋“ค ๊ฒƒ์ด๋‹ค.
    • ๊ฐ ํด๋ก์‚ฌ์ดํด์—์„œ, ์™„์ „ํ•œ ๋ช…๋ น์–ด๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ชจ๋“  ๋‹จ๊ณ„๋ฅผ ์ˆ˜ํ–‰ํ•œ๋‹ค.
      • ๊ทธ๋ž˜์„œ ๋А๋ฆด ๊ฒƒ์ด๋‹ค!

4.3.1 Organizing Processing into Stages
#

  • ์ผ๋ฐ˜์ ์œผ๋กœ, ๋ช…๋ น์–ด ์ฒ˜๋ฆฌ์—๋Š” ์—ฌ๋Ÿฌ ์—ฐ์‚ฐ์ด ์ˆ˜๋ฐ˜๋œ๋‹ค.
    • ์šฐ๋ฆฌ๋Š” ๊ทธ ๋ชจ๋“  ๋ช…๋ น์–ด๊ฐ€ ์ผ๊ด€๋œ ๋‹จ๊ณ„ ์‹œํ€€์Šค๋ฅผ ๋”ฐ๋ฅด๋„๋ก ํ•˜๊ณ ์‹ถ๋‹ค.
    • ๊ณผ์ •์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค
      • Fetch
        • PC๋ฅผ ๋ฉ”๋ชจ๋ฆฌ์ฃผ์†Œ๋กœ ์‚ฌ์šฉํ•˜์—ฌ ๋ช…๋ น์–ด ๋ฐ”์ดํŠธ ์ฝ๊ธฐ
        • icode / ifun / ๋ ˆ์ง€์Šคํ„ฐ ์ง€์ •์ž / valC ๋“ฑ์„ ์ฝ๊ธฐ
        • valP๋Š” ๋‹ค์Œ ๋ช…๋ น์–ด ์ฃผ์†Œ = PC์˜ ๊ฐ’์— ์ฝ์€ ๋ช…๋ น์–ด์˜ ๊ธธ์ด๋ฅผ ๋”ํ•œ ๊ฐ’
      • Decode
        • ๋ ˆ์ง€์Šคํ„ฐํŒŒ์ผ์—์„œ ์ตœ๋Œ€ ๋‘๊ฐœ์˜ ์—ฐ์‚ฐ์ž๋ฅผ ์ฝ์–ด์„œ valA / valB ์ œ๊ณต
      • Execute
        • ๋ช…๋ น์–ด์— ์˜ํ•ด ์ง€์ •๋œ ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•˜๊ฑฐ๋‚˜, ๋ฉ”๋ชจ๋ฆฌ ์ฐธ์กฐ์˜ ์ฃผ์†Œ๋ฅผ ๊ณ„์‚ฐํ•˜๊ฑฐ๋‚˜, ์Šคํƒํฌ์ธํ„ฐ๋ฅผ ์ฆ๊ฐ€/๊ฐ์†Œํ•˜๋Š” ๋“ฑ.
        • ์ด ๊ฐ’์„ valE๋ผ๊ณ  ํ•œ๋‹ค.
        • ์กฐ๊ฑด ํ”Œ๋ž˜๊ทธ๊ฐ€ ์„ค์ • / ํ‰๊ฐ€ํ•˜๋Š”๊ฒƒ๋„ ์—ฌ๊ธฐ
      • Memory
        • ๋ฉ”๋ชจ๋ฆฌ์— ๋ฐ์ดํ„ฐ๋ฅผ ์“ฐ๊ฑฐ๋‚˜ ๋ฉ”๋ชจ๋ฆฌ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์–ด์˜ค๊ธฐ
          • ๊ทธ ๊ฐ’์„ valM์ด๋ผ๊ณ  ํ•œ๋‹ค.
      • Write back
        • ์ตœ๋Œ€ ๋‘๊ฐœ์˜ ๊ฒฐ๊ณผ๋ฅผ ๋ ˆ์ง€์Šคํ„ฐ ํŒŒ์ผ์— ์“ฐ๊ธฐ
      • PC update
        • PC๋ฅผ ๋‹ค์Œ ๋ช…๋ น์–ด ์ฃผ์†Œ๋กœ ์—…๋ฐ์ดํŠธ.
  • ํ”„๋กœ์„ธ์„œ๋Š” ์œ„ ๊ณผ์ •์„ ๋ฌดํ•œํžˆ ๋ฐ˜๋ณตํ•œ๋‹ค.
    • ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ• ๋•Œ ์ •์ง€ํ•œ๋‹ค
      • halt / ์œ ํšจํ•˜์ง€ ์•Š์€ ๋ช…๋ น์–ด / ์œ ํšจํ•˜์ง€ ์•Š์€ ์ฃผ์†Œ ๋“ฑ
    • ๋ณด๋‹ค ์™„์ „ํ•œ ์„ค๊ณ„์—์„œ๋Š” ์˜ˆ์™ธ์ฒ˜๋ฆฌ ๋ชจ๋“œ์— ์ง„์ž…ํ•ด์„œ ํŠน์ˆ˜ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰
  • ๊ณผ์ •์ด ๋˜๊ฒŒ ๋งŽ๊ฒŒ ๋А๊ปด์ง€์ง€๋งŒ, ์ €๋ ‡๊ฒŒ ์ „์ฒด ํ๋ฆ„์„ ์œ ์‚ฌํ•˜๊ฒŒ ํ•ด์•ผ ํ•˜๋“œ์›จ์–ด์˜ ์–‘์„ ์ตœ์†Œํ™”ํ•˜๊ณ  ๋ณต์žก์„ฑ์„ ์ค„์ผ ์ˆ˜ ์žˆ๋‹ค.
    • ์„œ๋กœ ๋‹ค๋ฅธ ๋ช…๋ น์–ด๊ฐ€ ๊ฐ€๋Šฅํ•œ ๋งŽ์€ ํ•˜๋“œ์›จ์–ด๋ฅผ ๊ณต์œ ํ•˜๋„๋ก ํ•œ๋‹ค๊ฑฐ๋‚˜..
    • ํ•˜๋“œ์›จ์–ด์—์„œ ๋…ผ๋ฆฌ๋ธ”๋Ÿญ์„ ์ค‘๋ณตํ•˜๋Š” ๋น„์šฉ์€ ์†Œํ”„ํŠธ์›จ์–ด์—์„œ ์ฝ”๋“œ๋ธ”๋Ÿญ์„ ์ค‘๋ณตํ•˜๋Š”๊ฑฐ๋ณด๋‹ค ํ›จ์”ฌ ๋น„์‹ธ๋‹ˆ๊นŒ!

4.3.2 SEQ Hardware Structure
#

  • ๋ชจ๋“  Y86-64 ๋ช…๋ น์–ด๋“ค์€ ์œ„์˜ 6๋‹จ๊ณ„์˜ ์—ฐ์†์œผ๋กœ ์กฐ์งํ™”ํ•  ๊ฒƒ์ด๋‹ค.
  • ํ•˜๋“œ์›จ์–ด์ ์œผ๋กœ ์œ„์˜ 6๋‹จ๊ณ„๋Š” ์–ด๋–ป๊ฒŒ ๊ตฌ์„ฑ๋˜๋Š”๊ฐ€?
    • Fetch
      • PC ๋ ˆ์ง€์Šคํ„ฐ๋ฅผ ์ด์šฉํ•ด์„œ ๋ช…๋ น์–ด ๋ฐ”์ดํŠธ ์ฝ๊ธฐ, valP ๊ณ„์‚ฐ
    • Decode
      • ๋ ˆ์ง€์Šคํ„ฐ ํŒŒ์ผ์˜ ๋‘๊ฐœ์˜ ์ฝ๊ธฐํฌํŠธ๋ฅผ ํ†ตํ•ด valA, valB๋ฅผ ๋™์‹œ์— ์ฝ๋Š”๋‹ค.
    • Execute
      • ๋ช…๋ น์–ด ์œ ํ˜•์— ๋”ฐ๋ผ arithmetic / Logic ALU ์œ ๋‹›์„ ๋‹ค์–‘ํ•˜๊ฒŒ ์‚ฌ์šฉํ•œ๋‹ค.
        • ๊ทธ์ค‘์— ์ž…๋ ฅ์ค‘ ํ•˜๋‚˜์— 0์„ ๋”ํ•˜์—ฌ ์ถœ๋ ฅ์œผ๋กœ ์ „๋‹ฌํ•˜๋Š” ๋”๋ฏธ adder๋„ ์žˆ๋‹ค!
      • CC (Condition Code Register)
        • ์„ธ๊ฐœ์˜ ์กฐ๊ฑด ์ฝ”๋“œ ๋น„ํŠธ๋ฅผ ๋ณด์œ ํ•จ
        • ์ƒˆ๋กœ์šด ๊ฐ’์€ ALU์— ์˜ํ•ด ๊ณ„์‚ฐ๋˜๊ณ , ์กฐ๊ฑด๋ถ€ ์ด๋™ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•  ๋•Œ ๋ชฉ์ ์ง€ ๋ ˆ์ง€์Šคํ„ฐ๋ฅผ ์—…๋ฐ์ดํŠธํ• ์ง€๋ฅผ ๊ณ„์‚ฐํ•จ.
          • ์ ํ”„๊ฐ™์€๊ฒƒ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€.
    • Memory
      • ๋ฉ”๋ชจ๋ฆฌ์˜ ์›Œ๋“œ๋ฅผ ์ฝ๊ฑฐ๋‚˜ ์”€.
      • ๋ช…๋ น์–ด ๋ฉ”๋ชจ๋ฆฌ์™€ ๋ฐ์ดํ„ฐ ๋ฉ”๋ชจ๋ฆฌ๋Š” ๊ทธ๋ฆผ์—์„œ๋Š” ๋‹ค๋ฅด๊ฒŒ ๊ทธ๋ฆฌ์ง€๋งŒ, ๊ฒฐ๊ตญ ํ•˜๋‚˜์˜ ๋ฉ”๋ชจ๋ฆฌ์— ์—‘์„ธ์Šคํ•˜๋Š”๊ฒƒ์ž„
    • Write back
      • ๋ ˆ์ง€์Šคํ„ฐํŒŒ์ผ์˜ ๋‘๊ฐœ์˜ ์“ฐ๊ธฐ ํฌํŠธ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ž‘์„ฑ
      • ํฌํŠธ E๋Š” ALU์˜ ๊ณ„์‚ฐ ๊ฒฐ๊ณผ๋ฅผ ์“ฐ๊ธฐ ์œ„ํ•ด, ํฌํŠธ M์€ ๋ฐ์ดํ„ฐ ๋ฉ”๋ชจ๋ฆฌ์—์„œ ์ฝ์€ ๊ฐ’์„ ์“ฐ๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ
  • ๊ทธ๋ฆผ์œผ๋กœ ๋‚˜ํƒ€๋‚ผ๋•Œ ๊ด€๋ก€
    • ํด๋Ÿญ ๋ ˆ์ง€์Šคํ„ฐ๋Š” ํฐ์ƒ‰ ์ง์‚ฌ๊ฐํ˜• (SEQ์—์„œ๋Š” PC๊ฐ€ ์œ ์ผํ•œ ํฌ๋Ÿญ ๋ ˆ์ง€์Šคํ„ฐ์ด๋‹ค)
    • ํ•˜๋“œ์›จ์–ด ์œ ๋‹›์€ ์—ฐํ•œ ํŒŒ๋ž€์ƒ‰ ์‚ฌ๊ฐํ˜•
    • ์ œ์–ด ๋กœ์ง ๋ธ”๋Ÿญ์€ ํšŒ์ƒ‰ ๋‘ฅ๊ทผ ์‚ฌ๊ฐํ˜•
    • ์™€์ด์–ด ์ด๋ฆ„์€ ํฐ์ƒ‰ ์› (๋ผ๋ฒจ)
    • ์›Œ๋“œ๋Š” ์ค‘๊ฐ„๋‘๊ป˜ ์„ , ๋ฐ”์ดํŠธ๋Š” ์–‡์€์„ , ๋‹จ์ผ๋น„ํŠธ๋Š” ์ ์„ 

4.3.3 SEQ Timing
#

  • SEQ๋Š” ์กฐํ•ฉ๊ธฐ์™€ ๋‘๊ฐ€์ง€ ํ˜•ํƒœ์˜ ๋ฉ”๋ชจ๋ฆฌ ์žฅ์น˜(ํด๋ก ๋ ˆ์ง€์Šคํ„ฐ, ๋žœ๋ค ์•ก์„ธ์Šค ๋ฉ”๋ชจ๋ฆฌ)๋กœ ๊ตฌ์„ฑ๋œ๋‹ค.
    • ์กฐํ•ฉ๊ธฐ๋Š” ์‹œํ€€์‹ฑ์ด๋‚˜ ์ œ์–ด ์—†์ด, ์ž…๋ ฅ์ด ๋ณ€๊ฒฝ๋ ๋•Œ๋งˆ๋‹ค ๋…ผ๋ฆฌ๊ฒŒ์ดํŠธ ๋„คํŠธ์›Œํฌ๋ฅผ ํ†ตํ•ด ์ „ํŒŒ๋œ๋‹ค.
    • ๋žœ๋ค ์—‘์„ธ์Šค ๋ฉ”๋ชจ๋ฆฌ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์–ด์˜ค๋Š” ๊ณผ์ •์€ ์ฃผ์†Œ ์ž…๋ ฅ์— ๊ธฐ๋ฐ˜ํ•˜์—ฌ ๊ณ„์‚ฐ๋œ๋‹ค๊ณ  ๋ด๋„ ๋œ๋‹ค.
      • ๋ ˆ์ง€์Šคํ„ฐ ํŒŒ์ผ์—์„œ๋Š” ํ•ฉ๋ฆฌ์ ์ด๊ณ , ๋” ํฐ ํšŒ๋กœ์—์„œ๋„ ํŠน์ˆ˜ํ•œ ํด๋ก ํšŒ๋กœ๋ฅผ ์ด์šฉํ•ด์„œ ์ด๋ฅผ ๋ชจ๋ฐฉํ•  ์ˆ˜ ์žˆ๋‹ค.
      • ์จ์žˆ๋Š” ๋ง์ด ์ข€ ๋ณต์žกํ•œ๋ฐ, ๊ทธ๋ƒฅ ํšŒ๋กœ ๊ด€์ ์—์„œ ์–ด์ฐจํ”ผ ์“ฐ๊ธฐ๋„ ํด๋ก ์—ฃ์ง€์—์„œ๋งŒ ์ผ์–ด๋‚˜๊ณ , ์ฝ๊ธฐ๋Š” ์ฃผ์†Œ๋ฅผ ๋„ฃ์œผ๋ฉด ๋ฐ์ดํ„ฐ๊ฐ€ ๋‚˜์˜ค๋Š” ๊ณผ์ •์ด๋‹ˆ๊นŒ ์กฐํ•ฉ ๋…ผ๋ฆฌ ๋ธ”๋ก์ด๋ž‘ ๋‹ค๋ฅผ๊ฒŒ ์—†๋‹ค๋Š” ๋ง์ธ ๊ฒƒ ๊ฐ™๋‹ค.
    • ๋ช…๋ น์–ด ๋ฉ”๋ชจ๋ฆฌ๋Š” ๋ช…๋ น์–ด ์ฝ๊ธฐ ์ „์šฉ์œผ๋กœ๋งŒ ์‚ฌ์šฉ๋˜๋ฏ€๋กœ, ์ด ์œ ๋‹› ์ž์ฒด๋ฅผ ์กฐํ•ฉ๊ธฐ๋กœ ์ƒ๊ฐํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ์ด๋ ‡๊ฒŒ ์ƒ๊ฐํ•˜๋ฉด, ์‹œํ€€์‹ฑ์— ๋Œ€ํ•ด ๋ช…์‹œ์ ์œผ๋กœ ์ œ์–ด๊ฐ€ ํ•„์š”ํ•œ๊ฑด PC, ์กฐ๊ฑด์ฝ”๋“œ ๋ ˆ์ง€์Šคํ„ฐ, ๋ฐ์ดํ„ฐ ๋ฉ”๋ชจ๋ฆฌ, ๋ ˆ์ง€์Šคํ„ฐ ํŒŒ์ผ 4๊ฐ€์ง€๊ฐ€ ๋‚จ๋Š”๋‹ค.
    • ์ด๋“ค์€ ํด๋ก์‹ ํ˜ธ ํ•˜๋‚˜๋ฅผ ํ†ตํ•ด ์ œ์–ด๋˜๊ณ , ๋ ˆ์ง€์Šคํ„ฐ์— ๊ฐ’์„ ๋กœ๋“œํ•˜๊ณ  ๋žœ๋ค์•ก์„ธ์Šค ๋ฉ”๋ชจ๋ฆฌ์— ๊ฐ’์„ ์“ฐ๋Š” ํƒ€์ด๋ฐ์„ ํŠธ๋ฆฌ๊ฑฐํ•œ๋‹ค.
    • PC๋Š” ๋งค ํด๋ก ์‚ฌ์ดํด๋งˆ๋‹ค ์ƒˆ๋กœ์šด ๋ช…๋ น์–ด ์ฃผ์†Œ๋ฅผ ๋กœ๋“œํ•˜๊ณ , ์กฐ๊ฑด์ฝ”๋“œ ๋ ˆ์ง€์Šคํ„ฐ๋Š” OPq์—์„œ๋งŒ ๋กœ๋“œ๋˜๊ณ , ๋ฐ์ดํ„ฐ๋ฉ”๋ชจ๋ฆฌ๋Š” rmmovq, pushq, call์—์„œ๋งŒ ์“ฐ์ด๊ณ …
    • ๋ ˆ์ง€์Šคํ„ฐ ํŒŒ์ผ์˜ ์“ฐ๊ธฐ ํฌํŠธ๋Š” ๋งค ์‚ฌ์ดํด๋งˆ๋‹ค ๋‘๊ฐœ์˜ ํ”„๋กœ๊ทธ๋žจ ๋ ˆ์ง€์Šคํ„ฐ๋ฅผ ์—…๋ฐ์ดํŠธํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ํŠน์ˆ˜ ๋ ˆ์ง€์Šคํ„ฐ ID์ธ 0xF๋ฅผ ํฌํŠธ์ฃผ์†Œ๋กœ ์‚ฌ์šฉํ•ด์„œ ์“ฐ๊ธฐ๊ฐ€ ์—†๋„๋ก ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ์ด๋Ÿฌํ•œ ํด๋กing๋Š” ์‹œํ€€์‹ฑ์„ ์ œ์–ดํ•˜๋Š”๋ฐ ๊ผญ ํ•„์š”ํ•œ ๊ฒƒ๋“ค์ด๋‹ค.

์›์น™: No reading back ํ”„๋กœ์„ธ์Šค๋Š” ๋ช…๋ น์–ด ์ฒ˜๋ฆฌ๋ฅผ ์™„๋ฃŒํ•˜๊ธฐ ์œ„ํ•ด ํ•ด๋‹น ๋ช…๋ น์–ด์— ์˜ํ•ด ์—…๋ฐ์ดํŠธ ๋œ ์ƒํƒœ๋ฅผ ์ฝ์„ ํ•„์š”๊ฐ€ ์—†๋‹ค.

๋งŒ์•ฝ pushq๋ฅผ ์œ„ํ•ด %rsp๋ฅผ 8 ๊ฐ์†Œ์‹œํ‚ค๊ณ  %rsp์˜ ๊ฐ’์„ ์“ฐ๊ธฐ ์—ฐ์‚ฐ์˜ ์ฃผ์†Œ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ๊ตฌํ˜„ํ–ˆ๋‹ค๊ณ  ํ•ด๋ณด์ž. ์ด๋Š” Memory ์—ฐ์‚ฐ์„ ์œ„ํ•ด ๋ ˆ์ง€์Šคํ„ฐ ํŒŒ์ผ์—์„œ ์—…๋ฐ์ดํŠธ๋œ ์Šคํƒ ํฌ์ธํ„ฐ ๊ฐ’์„ ์ฝ์–ด์•ผ ํ•œ๋‹ค. ๋Œ€์‹ , ์šฐ๋ฆฌ๋Š” ๋ฏธ๋ฆฌ Execute ๋‹จ๊ณ„์—์„œ valE๋กœ ์ƒ์„ฑํ•œํ›„, ์ด๊ฑธ ๋ ˆ์ง€์Šคํ„ฐ ์“ฐ๊ธฐ์™€ ๋ฐ์ดํ„ฐ ๋ฉ”๋ชจ๋ฆฌ ์“ฐ๊ธฐ์˜ ์ฃผ์†Œ๋กœ ๋ชจ๋‘ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

๋น„์Šทํ•œ ์˜ˆ์‹œ๋กœ ์กฐ๊ฑด ํ”Œ๋ž˜๊ทธ๋ฅผ ์„ค์ •ํ•œํ›„ ๋ฐ”๋กœ ์ฝ์–ด์•ผํ•˜๋Š” ๊ฒฝ์šฐ๋„ ์—†๊ฒŒ ํ•œ๋‹ค.

  • ์œ„์˜ ์›์น™ ๋•๋ถ„์—, SEQ์—์„œ ๋‹จ์ผ ํด๋ก์œผ๋กœ ๋ชจ๋“  ์ƒํƒœ ์—…๋ฐ์ดํŠธ๋ฅผ ์‚ฌ์ดํด ๋์— ํ•œ๋ฒˆ์— ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค.

4.3.4 SEQ Stage Implementations
#

  • HCL ์ž‘์„ฑ ๋ฐฉ๋ฒ•์„ ๋ฐฐ์šฐ์ž.
  • Fetch Stage
    • ๋ช…๋ น์–ด ๋ฉ”๋ชจ๋ฆฌ ํ•˜๋“œ์›จ์–ด ์œ ๋‹›์—์„œ, PC๋ฅผ ์ฒซ๋ฒˆ์งธ ๋ฐ”์ดํŠธ์˜ ์ฃผ์†Œ๋กœ ์‚ฌ์šฉํ•˜์—ฌ ํ•œ๋ฒˆ์— 10๋ฐ”์ดํŠธ๋ฅผ ๋Œ๊ณ ์˜จ๋‹ค.
    • ๊ทธ๋ฆฌ๊ณ  ๋ฐ”์ดํŠธ 0์€ split ์œ ๋‹›์— ์˜ํ•ด ๋‘๊ฐœ์˜ 4๋น„ํŠธ๋กœ ๋ถ„ํ• ๋œ๋‹ค.
      • icode, ifun์ด ๋˜๊ณ , ์ธ์ŠคํŠธ๋Ÿญ์…˜ ํ•จ์ˆ˜๋ฅผ ๋ฉ”๋ชจ๋ฆฌ์—์„œ ์ฝ์€ ๊ฐ’๊ณผ ๊ฐ™๊ฒŒ ๊ณ„์‚ฐํ•˜๊ฑฐ๋‚˜, ์œ ํšจํ•˜์ง€ ์•Š์œผ๋ฉด nop๋กœ ๊ณ„์‚ฐํ•œ๋‹ค.
      • icode๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์„ธ๊ฐœ์˜ 1๋น„ํŠธ ์‹ ํ˜ธ๋ฅผ ๊ณ„์‚ฐํ•œ๋‹ค.
        • instr_valid (์œ ํšจํ•œ ์ธ์ŠคํŠธ๋Ÿญ์…˜์ธ๊ฐ€?)
        • need_regids (๋ ˆ์ง€์Šคํ„ฐ ์ง€์ •์ž ๋ฐ”์ดํŠธ๊ฐ€ ํฌํ•จ๋˜๋Š”๊ฐ€?)
        • need_valC (์ƒ์ˆ˜ ์›Œ๋“œ๊ฐ€ ํฌํ•จ๋˜๋Š”๊ฐ€?)
    • instr_valid์™€ imem_error(๋ช…๋ น์–ด ์ฃผ์†Œ๊ฐ€ ๋ฒ”์œ„๋ฅผ ๋ฒ—์–ด๋‚จ)์€ ๋ฉ”๋ชจ๋ฆฌ ๋‹จ๊ณ„์—์„œ ์ƒํƒœ ์ฝ”๋“œ๋ฅผ ์ƒ์„ฑํ•  ๋•Œ ์‚ฌ์šฉ๋œ๋‹ค.
  • Decode ans Write-Back Stages
    • ๋‘ ๋‹จ๊ณ„๋Š” ๋ชจ๋“œ ๋ ˆ์ง€์Šคํ„ฐ ํŒŒ์ผ์— ์•ก์„ธ์Šคํ•˜๋ฏ€๋กœ ๊ฒฐํ•ฉ๋œ๋‹ค.
    • ๋ ˆ์ง€์Šคํ„ฐ ํŒŒ์ผ์€ 4๊ฐœ์˜ ํฌํŠธ (์ฝ๊ธฐ A, ์ฝ๊ธฐ B, ์“ฐ๊ธฐ E, ์“ฐ๊ธฐ M)์„ ๊ฐ–๋Š”๋‹ค.
    • ๊ฐ ํฌํŠธ๋Š” ์ฃผ์†Œ ์—ฐ๊ฒฐ๊ณผ ๋ฐ์ดํ„ฐ ์—ฐ๊ฒฐ์„ ๋ชจ๋‘ ๊ฐ–๋Š”๋‹ค.
      • ์ฃผ์†Œ ์—ฐ๊ฒฐ์€ ๋ ˆ์ง€์Šคํ„ฐ ID, ๋ฐ์ดํ„ฐ ์—ฐ๊ฒฐ์€ 64๊ฐœ์˜ ์™€์ด์–ด ์„ธํŠธ
    • HCL์—์„œ๋Š” srcA, srcB, dstE, dstM์œผ๋กœ ๊ด€๋ฆฌํ•œ๋‹ค.
      • 0xF๋Š” ์–ด๋–ค ๋ ˆ์ง€์Šคํ„ฐ๋„ ์•ก์„ธ์Šคํ•˜์ง€ ์•Š์„๋•Œ
  • Execute Stage
    • ALU๊ฐ€ ํฌํ•จ๋œ๋‹ค!
    • ์—ฌ๊ธฐ์„  alufun์˜ ์‹ ํ˜ธ์˜ ์„ค์ •์— ๋”ฐ๋ผ add, subtract, and, or, execlusive-or ๋“ฑ์˜ ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•œ๋‹ค.
      • ๊ทธ ๊ฒฐ๊ณผ๋Š” valE ์‹ ํ˜ธ๊ฐ€ ๋œ๋‹ค.
    • ALU A์˜ ๊ฐ’์€ valA, valC, -8(call, pushq), 8(ret, popq) ๊ฐ€ ๋  ์ˆ˜ ์žˆ๋‹ค.
  • Memory Stage
    • ํ”„๋กœ๊ทธ๋žจ ๋ฐ์ดํ„ฐ์˜ ์ฝ๊ธฐ ๋˜๋Š” ์“ฐ๊ธฐ๋ฅผ ์ˆ˜ํ–‰ํ•œ๋‹ค.
  • Surveying SEQ
    • ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด Y86-64๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค!
    • ๊ทธ๋Ÿฐ๋ฐ.. ์ข€ ๋А๋ฆฌ์ง€ ์•Š๋‚˜? ํด๋ก์€ ์‹ ํ˜ธ๊ฐ€ ๋‹จ์ผ ์‚ฌ์ดํด ๋‚ด์— ๋ชจ๋“  ๋‹จ๊ณ„๋ฅผ ํ†ต๊ณผํ• ์ •๋„๋กœ ๋А๋ ค์•ผํ•œ๋‹ค.
    • ๊ทธ๋Ÿฌ๋‹ˆ ๋” ์ข‹์€ ๋ฐฉ๋ฒ•์„ ์ฐพ์•„๋ณด์ž. Pipelining.

โ”์งˆ๋ฌธ ์‚ฌํ•ญ
#

์•ž์—์„œ ๊ณ„์‚ฐ๋œ valP๊ฐ™์€๊ฑด ์–ด๋”˜๊ฐ€์— ํ•˜๋“œ์›จ์–ด ๋ ˆ์ง€์Šคํ„ฐ๋กœ ์ €์žฅ๋˜์–ด์žˆ์–ด์•ผ ํ•˜๋Š”๊ฑด๊ฐ€?

์ผ๋‹จ ์ด SEQ์—์„œ๋Š” ๊ทธ๋ ‡๊ฒŒ ์•ˆํ•˜๊ณ  ๊ณ„์† ๋“ค๊ณ ๋‹ค๋‹Œ๋‹ค.

3๊ฐ€์ง€ ์กฐ๊ฑด๋น„ํŠธ๋„ ํ•˜๋“œ์›จ์–ด ๋ ˆ์ง€์Šคํ„ฐ๋กœ ์ €์žฅ๋˜์–ด ์žˆ๋Š”๊ฑด๊ฐ€?

๋งž๋‹ค! ๊ทธ๋ฆฌ๊ณ  ๋ชจ๋“  ๋ช…๋ น์–ด๊ฐ€ CC๋ฅผ ์—…๋ฐ์ดํŠธํ•˜์ง„ ์•Š๋Š”๋‹ค. OPq ๊ณ„์—ด๋งŒ ์—…๋ฐ์ดํŠธํ•จ.

0xF๋ฅผ ํŠน์ˆ˜ ID๋กœ ์“ฐ๋ฉด์„œ x86_64์—์„œ ๋ ˆ์ง€์Šคํ„ฐ๊ฐ€ 15๊ฐœ์ธ๊ฑด๊ฐ€?

๋งž๋‹ค! ๊ทธ๋ฆฌ๊ณ  ์ด๋ž˜์•ผ halt, nop ๊ฐ™์ด ์“ธ ๋ ˆ์ง€์Šคํ„ฐ๊ฐ€ ์—†๋Š” ๋ช…๋ น์–ด๋„ ์กฐ๊ฑด๋ถ„๊ธฐ ์ฒ˜๋ฆฌ ์•ˆํ•˜๊ณ  0xF์— ์“ฐ๋Š”๊ฑธ๋กœ ๋‹จ์ˆœํ™”ํ•  ์ˆ˜ ์žˆ๋‹ค.

์ƒ๊ฐ๋ณด๋‹ค ํ•˜๋“œ์›จ์–ด ๋ ˆ์ง€์Šคํ„ฐ๊ฐ€ ๋งŽ์€๊ฑฐ๊ฐ™๋‹ค. ํ”„๋กœ๊ทธ๋žจ ๋ ˆ์ง€์Šคํ„ฐ 15๊ฐœ, ์กฐ๊ฑด๋ถ„๊ธฐ 3๊ฐœ, PC, ๊ทธ๋ฆฌ๊ณ  ์ƒํƒœ ์ฝ”๋“œ๋„ ์ด๊ฑธ๋กœ ์ €์žฅํ•  ๊ฑฐ ๊ฐ™์€๋ฐ.. ๋ช‡๊ฐœ๋‚˜ ์žˆ๋Š”๊ฑธ๊นŒ?

ํ”„๋กœ๊ทธ๋žจ ๋ ˆ์ง€์Šคํ„ฐ 15๊ฐœ, ์กฐ๊ฑด์ฝ”๋“œ 3๊ฐœ, PC 1๊ฐœ, ์ƒํƒœ์ฝ”๋“œ 4๊ฐœ -> 23๊ฐœ.

ํ•˜๋“œ์›จ์–ด์ ์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ค๋Š”๊ฑด ์–ด๋–ป๊ฒŒ ์ด๋ฃจ์–ด์ง€๋Š”๊ฐ€? ๋ฌผ๋ฆฌ์ ์œผ๋กœ ์ด๋™ํ•˜์ง„ ์•Š์„๊ฑฐ์•„๋ƒ.

์–ด.. ์ „๊ธฐ์  ์‹ ํ˜ธ๋กœ ๋™์ž‘ํ•œ๋‹ค๊ณ  ํ•œ๋‹ค.

  • ์ฃผ์†Œ ๋ฒ„์Šค์— ์›ํ•˜๋Š” ์ฃผ์†Œ๋ฅผ ์ „์•• ํŒจํ„ด์œผ๋กœ ์ธ๊ฐ€ DRAM์˜ row/column decoder๊ฐ€ ํ•ด๋‹น ์ฃผ์†Œ์˜ ์ปคํŒจ์‹œํ„ฐ ๋ฐฐ์—ด์„ ์„ ํƒ ์ปคํŒจ์‹œํ„ฐ ์ถฉ์ „ ์ƒํƒœ(0/1)๊ฐ€ sense amplifier๋ฅผ ํ†ตํ•ด ์ฆํญ ๋ฐ์ดํ„ฐ ๋ฒ„์Šค๋กœ ์ถœ๋ ฅ
  • ์ด๊ฒŒ๋จผ์†Œ๋ฆฌ์ง€;; ์ „์ „์ชฝ ๋‚ด์šฉ์ด๋ผ๋Š”๊ฑฐ ๊ฐ™๋‹ค. ๋‚˜์ค‘์— ๊ณต๋ถ€ํ•˜์ฃ 
0xF์—์„œ ๊ฐ’์„ ๊ฐ€์ ธ์˜ค๋ฉด ์–ด๋–ป๊ฒŒ ๋˜์ง€? ๊ทธ๋ƒฅ ๊ทธ๋•Œ ์ „์••์— ๋”ฐ๋ผ ๋žœ๋คํ•œ ๊ฐ’์ด ๋“ค์–ด๊ฐ€๋‚˜? 0์œผ๋กœ ์ดˆ๊ธฐํ™”๋œ ๊ฐ’์ด ๋“ค์–ด๊ฐ€๋‚˜?

ํ•˜๋“œ์›จ์–ด๊ฐ€ ์•ฝ์†๋œ ๊ฐ’์œผ๋กœ ์ฒ˜๋ฆฌ.

๋ฉ”๋ชจ๋ฆฌ์— valC๋ฅผ ์ฑ„์šฐ๋Š”๊ฒฝ์šฐ (๋ฐฐ์—ด ์ดˆ๊ธฐํ™”๋ผ๋˜์ง€) ๊ทธ๊ฑด ์–ด๋–ป๊ฒŒ ๋™์ž‘ํ•˜์ง€? Mem.data์— valC๋Š” ๋ชป๊ฐ€๋Š”๊ฑธ๋กœ ๋ณด์ด๋Š”๋ฐ

์ด๊ฑด Y86-64์—์„œ ๋ฉ”๋ชจ๋ฆฌ์— ์ง์ ‘์“ฐ๊ธฐ๋ฅผ ์ง€์› ์•ˆํ•ด์„œ!

๐Ÿ”— ์ฐธ๊ณ  ์ž๋ฃŒ
#