HYU/์šด์˜์ฒด์ œ(OS)

1. Computer System Overview (2)

Jaeguk 2023. 3. 20. 13:18

Memory Hierarchy


์ปดํ“จํ„ฐ ์•ˆ์— ์ €์žฅํ•  ์ˆ˜ ์žˆ๋Š” ๊ณต๊ฐ„์˜ ๊ณ„์ธต๊ตฌ์กฐ

์ปดํ“จํ„ฐ์—์„œ ์‚ฌ์šฉ๋˜๋Š” ์ €์žฅ๊ณต๊ฐ„์€ ๊ณ„์ธต ๊ตฌ์กฐ๋ฅผ ์ด๋ฃจ๊ณ  ์žˆ๋‹ค.

์œ„๋กœ ์˜ฌ๋ผ๊ฐˆ์ˆ˜๋ก ์†๋„๋Š” ๋น ๋ฅด์ง€๋งŒ ์šฉ๋Ÿ‰์€ ์ค„์–ด๋“ค๊ณ  ๋น„ํŠธ๋‹น ๊ฐ€๊ฒฉ์€ ๋น„์‹ธ์ง„๋‹ค.

=> ์ ‘๊ทผ ํšŸ์ˆ˜๊ฐ€ ๋งŽ์€ ๋ฐ์ดํ„ฐ๋ฅผ ๋น ๋ฅธ ์ €์žฅ ์žฅ์น˜์— ์ €์žฅํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.

 

์ด๋Ÿฌํ•œ ๊ณ„์ธต ๊ตฌ์กฐ๊ฐ€ ์–ด๋–ป๊ฒŒ ํšจ๊ณผ๋ฅผ ๋ฐœํœ˜ํ• ๊นŒ?

CPU๊ฐ€ ์ผ์„ ํ•  ๋•Œ ์ ‘๊ทผํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋ฉด ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ ๊ท ์ผํ•˜๊ฒŒ ์ ‘๊ทผํ•˜์ง€ ์•Š๊ณ  ๋˜๋Š” ๋ชจ๋“  ๋ช…๋ น์–ด๋ฅผ ๊ท ์ผํ•˜๊ฒŒ ์ ‘๊ทผํ•˜์ง€ ์•Š๊ณ  ํŠน์ • ๋ฐ์ดํ„ฐ๋‚˜ ํŠน์ • ๋ช…๋ น์–ด๋“ค์ด ๋” ๋นˆ๋ฒˆํ•˜๊ฒŒ ์ ‘๊ทผ์ด ๋˜๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

์ด๊ฑธ ์ฐธ์กฐ ์ง€์—ญ์„ฑ(Locality of reference) ์ด๋ผ๊ณ  ํ•œ๋‹ค.

 

์˜ˆ๋ฅผ ๋“ค์–ด, Loop๋ฌธ ์•ˆ์— ์žˆ๋Š” ๋ช…๋ น์–ด๋“ค์€ ์ˆ˜ํ–‰์ด ๋ฐ˜๋ณต์ ์œผ๋กœ ์ด๋ฃจ์–ด์ง„๋‹ค. ๊ทธ๋Ÿฐ๋ฐ Loop๊ฐ€ ์•„๋‹Œ ๋ช…๋ น์–ด๋Š” ํ•œ ๋ฒˆ ์ˆ˜ํ–‰๋˜๊ณ  ์ง€๋‚˜๊ฐ„๋‹ค.

์ฆ‰, Instruction๊ณผ Data๋Š” ์ž์ฃผ ์ ‘๊ทผ๋˜๋Š” ๋ถ€๋ถ„ ๊ณผ ์ž์ฃผ ์ ‘๊ทผ๋˜์ง€ ์•Š๋Š” ๋ถ€๋ถ„ ์ด ๋‚˜๋‰˜๋”๋ผ.

์ž์ฃผ ์ ‘๊ทผ๋˜๋Š” ์• ๋“ค์„ ๋น ๋ฅธ ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ฆฌ๊ณ  ๋œ ์ž์ฃผ ์ ‘๊ทผ๋˜๋Š” ์• ๋“ค์„ ๋А๋ฆฐ ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ฆฌ๋ฉด ์‹œ์Šคํ…œ์˜ ์†๋„๋ฅผ ๋น ๋ฅด๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.

์–ด๋–ค ์‹œ์ ์— ์ž์ฃผ ์ ‘๊ทผํ•˜๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ๋ฐ˜๋“œ์‹œ ์กด์žฌํ•˜๋”๋ผ.

์‹œ์ ๋งˆ๋‹ค ์ž์ฃผ ์ ‘๊ทผ๋˜๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ๋‹ฌ๋ผ์งˆ ์ˆ˜๋Š” ์žˆ์œผ๋‚˜ ์•„๋ฌดํŠผ ๋ฐ˜๋“œ์‹œ ์กด์žฌํ•œ๋‹ค.

=> ์ด ์ž์ฃผ ์ ‘๊ทผ๋˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ฐพ์•„๋‚ด๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ LRU ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๊ณ , ์ด๊ฑธ ๋น ๋ฅด๊ฒŒ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ๊ฑด ํ•˜๋“œ์›จ์–ด์˜ ๋„์›€์„ ๋ฐ›์•„์•ผ ํ•˜๋Š”๋ฐ, ๊ฑ”๊ฐ€ ๋ฐ”๋กœ ์บ์‹œ๋‹ค.

 

H/W Speed-up Trends

  • ์œ„๋กœ ๊ฐˆ์ˆ˜๋ก ํฐ ๊ฐ„๊ฒฉ์ด๊ธฐ ๋•Œ๋ฌธ์— A > B ์ด๋‹ค.
  • ์ฆ‰, CPU ์ž…์žฅ์—์„œ DRAM์˜ ์†๋„๊ฐ€ ๋А๋ฆฐ ์ •๋„๊ฐ€ DRAM์˜ ์ž…์žฅ์—์„œ ํ•˜๋“œ ๋””์Šคํฌ๊ฐ€ ๋А๋ฆฐ ์ •๋„๋ณด๋‹ค ๋” ํฌ๊ฒŒ ๋А๊ปด์ง„๋‹ค.
  • => CPU ์ž…์žฅ์—์„œ DRAM์€ ๋งค์šฐ ๋งค์šฐ ๋А๋ฆฐ ์กด์žฌ.
  • CPU์™€ DRAM ์‚ฌ์ด์˜ ์†๋„์ฐจ์ด๋ฅผ ์ค„์ด๊ธฐ ์œ„ํ•ด์„œ Cache๊ฐ€ ๋งŒ๋“ค์–ด์กŒ๋‹ค.
  • CPU์™€ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์ด์˜ ์†๋„์ฐจ์ด๊ฐ€ A, ๋ฉ”๋ชจ๋ฆฌ์™€ ํ•˜๋“œ๋””์Šคํฌ ์ฐจ์ด๊ฐ€ B
    • ์–ธ๋œป ๋ณด๊ธฐ์—” B๊ฐ€ ๊ฐ„๊ฒฉ์ด ๋” ์ปค๋ณด์ด์ง€๋งŒ y์ถ•์„ ๋ณด๋ฉด ์‹ค์ œ๋กœ A๊ฐ€ ํ›จ์”ฌ ๋” ํฐ ๊ฐ„๊ฒฉ์ž„์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.
    • ์ฆ‰, CPU์ž…์žฅ์—์„œ ๋ฉ”๋ชจ๋ฆฌ๋Š” ์—„์ฒญ ์—„์ฒญ ๋А๋ฆฐ ์กด์žฌ๋‹ค. I/O๊ฐ€ ๋นˆ๋ฒˆํ•˜๊ฒŒ ๋ฐœ์ƒํ•˜๋Š” ๊ฒฝ์šฐ๋Š” ํ•˜๋“œ๋””์Šคํฌ๊ฐ€ ๋ณ‘๋ชฉ์ด ๋˜๋Š” ๊ฒƒ์ด ๋งž๋Š”๋ฐ, I/O๊ฐ€ ๋นˆ๋ฒˆํ•˜๊ฒŒ ๋ฐœ์ƒํ•˜์ง€ ์•Š์„ ๊ฒฝ์šฐ์—๋Š” CPU์™€ DRAM์ด ์ผ์„ ๋‹ค ํ•˜๋Š” ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— DRAM์ด ๋ณ‘๋ชฉ์ด ๋œ๋‹ค.
    • ์ „์ฒด ์‹œ์Šคํ…œ์˜ ๋ณ‘๋ชฉ์€ ํ•˜๋“œ ๋””์Šคํฌ๊ฐ€ ๋งž์ง€๋งŒ, ์ƒ๋Œ€์ ์œผ๋กœ CPU์˜ ์ž…์žฅ์—์„œ ๋‹ต๋‹ตํ•œ ๊ฑด ๋ฉ”์ธ ๋ฉ”๋ชจ๋ฆฌ์ž„.
    • ๊ทธ๋ฆฌ๊ณ  I/O๊ฐ€ ์ž์ฃผ ๋ฐœ์ƒํ•˜์ง€ ์•Š๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ๊ฝค๋‚˜ ์žˆ๋‹ค.

 

Cache


์บ์‹œ ๋ฉ”๋ชจ๋ฆฌ๋Š” ๋ฉ”๋ชจ๋ฆฌ์˜ ์†๋„ ๋•Œ๋ฌธ์— CPU๊ฐ€ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ช…๋ น์˜ ์†๋„๊ฐ€ ์ œํ•œ๋  ์ˆ˜ ๋ฐ–์— ์—†๋‹ค๋Š” ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด์„œ ์‚ฌ์šฉ๋˜๋Š” CPU์™€ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์ด์— ์œ„์น˜ํ•˜๋Š” ๋น ๋ฅธ ๋ฉ”๋ชจ๋ฆฌ.

  • ์บ์‹œ๋Š” ๋ฉ”์ธ ๋ฉ”๋ชจ๋ฆฌ์— ์‚ฌ์šฉ๋˜๋Š” DRAM๋ณด๋‹ค ๋น ๋ฅธ SRAM์„ ์‚ฌ์šฉํ•œ๋‹ค.

CPU๋Š” ๋ฉ”๋ชจ๋ฆฌ์—์„œ Instruction์ด๋‚˜ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ฌ ๋•Œ Word ๋‹จ์œ„๋กœ ๊ฐ€์ ธ์˜จ๋‹ค. ๋ช…๋ น์–ด ํ•˜๋‚˜ ๋˜๋Š” ๋ฐ์ดํ„ฐ ํ•˜๋‚˜ ์ด๋Ÿฐ ์‹์œผ๋กœ.

๊ทธ๋Ÿฌ๋‚˜ ์บ์‹œ ๋ฉ”๋ชจ๋ฆฌ์™€ ๋ฉ”์ธ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์ด์—์„œ ๋ฐ์ดํ„ฐ๊ฐ€ ์™”๋‹ค๊ฐ”๋‹คํ•  ๋•Œ๋Š” Block ๋‹จ์œ„๋กœ ์™”๋‹ค๊ฐ”๋‹ค ํ•œ๋‹ค.

 

์™œ?

ํ˜„์žฌ CPU๊ฐ€ 1๋ฒˆ Instruction์„ ์ ‘๊ทผํ•˜๊ณ  ์žˆ๋‹ค๋ฉด, ๋‹ค์Œ์—๋Š” 2๋ฒˆ์— ์ ‘๊ทผํ•˜์ง€ ์•Š์„๊นŒ? ๋ผ๋Š” ์ƒ๊ฐ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.( Instruction์€ ์ˆœ์ฐจ์ ์œผ๋กœ ์‹œํ–‰๋˜๋‹ˆ๊นŒ )

๊ทธ๋ž˜์„œ ๋งค๋ฒˆ ๋ฉ”๋ชจ๋ฆฌ์—์„œ ๊ฐ€์ ธ์˜ค๋ฉด ํž˜๋“œ๋‹ˆ๊นŒ ๊ทธ๋ƒฅ ํ†ต์งธ๋กœ ๊ฐ€์ ธ์˜จ๋‹ค.

 

์บ์‹œ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ 

  • ์ฐธ์กฐ ์ง€์—ญ์„ฑ์— ๋”ฐ๋ผ ๋ฉ”์ธ ๋ฉ”๋ชจ๋ฆฌ์˜ ๋ฐ์ดํ„ฐ ์ค‘์— ์ž์ฃผ ์ ‘๊ทผ๋˜๋Š” ๋ฐ์ดํ„ฐ๋“ค์„ ์บ์‹œ์— ์ €์žฅํ•ด๋‘”๋‹ค.
  • ์บ์‹œ๋Š” ์šฉ๋Ÿ‰์ด ์ž‘์•„์„œ ๋ฉ”๋ชจ๋ฆฌ์˜ ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ด๊ณ  ์žˆ์„ ์ˆ˜๋Š” ์—†๋‹ค. ๊ทธ๋ž˜์„œ ๋ฉ”์ธ ๋ฉ”๋ชจ๋ฆฌ์˜ ๋ฐ์ดํ„ฐ ์ค‘์—์„œ ์ž์ฃผ ์ ‘๊ทผ๋˜๋Š” ๋ฐ์ดํ„ฐ๋“ค๋งŒ ์บ์‹œ์— ์ €์žฅํ•œ๋‹ค.
  • ๊ทธ๋Ÿผ ์ž์ฃผ ์ ‘๊ทผ๋˜๋Š” ๋ฐ์ดํ„ฐ๋“ค์€ ๋ฉ”์ธ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ์•„๋‹Œ ์บ์‹œ์—์„œ ๊ฐ€์ ธ์˜ค๊ฒŒ ๋˜๋Š”๋ฐ ๊ทธ๋Ÿผ ๋ฉ”์ธ ๋ฉ”๋ชจ๋ฆฌ์—์„œ ๊ฐ€์ ธ์˜ฌ ๋•Œ ๋ณด๋‹ค ํ›จ์”ฌ ๋น ๋ฅด๊ฒŒ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๋‹ค.

 

Cache Design


Cache์˜ ์‚ฌ์ด์ฆˆ๋Š” ์–ด๋А ์ •๋„๋กœ ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์„๊นŒ?

์ž์ฃผ ์ ‘๊ทผ๋˜๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ๋ชจ๋‘ ์บ์‹œ์— ์˜ฌ๋ผ์˜ค๋ฉด ๊ฐ€์žฅ ์ข‹์„ํ…๋ฐ, ์ž์ฃผ ์ ‘๊ทผ๋˜๋Š” ๋ฐ์ดํ„ฐ๋‚˜ Instruction์˜ ํฌ๊ธฐ๊ฐ€ ์–ผ๋งˆ๋‚˜ ๋ ์ง€ ๋ชจ๋ฅด๋‹ˆ ์บ์‹œ์˜ ํฌ๊ธฐ๋ฅผ ์–ด๋–ป๊ฒŒ ํ•ด์•ผํ• ์ง€ ์ •ํ™•ํžˆ ์•Œ ์ˆ˜๊ฐ€ ์—†๋‹ค.

๊ทธ๋Ÿฐ๋ฐ ์‚ฌ๋žŒ๋“ค์ด ํ…Œ์ŠคํŠธํ•ด ๋ณธ ๊ฒฐ๊ณผ ์ž์ฃผ ์ ‘๊ทผ๋˜๋Š” ๋ฐ์ดํ„ฐ์˜ ํฌ๊ธฐ๊ฐ€ ๊ทธ๋ ‡๊ฒŒ ํฌ์ง€ ์•Š๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ฒŒ ๋˜์—ˆ๋‹ค.

์ฆ‰, ์บ์‹œ์˜ ํฌ๊ธฐ๊ฐ€ ๊ทธ๋ ‡๊ฒŒ ํฌ์ง€ ์•Š์•„๋„ ์ถฉ๋ถ„ํžˆ ํšจ๊ณผ๋ฅผ ๋ฐœํœ˜ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ๊ฒฝํ—˜์ ์œผ๋กœ ์•Œ๊ฒŒ ๋˜์—ˆ์Œ.

=> ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ํฌ๊ธฐ๊ฐ€ ์ปค์ง์— ๋”ฐ๋ผ Locality์˜ ์‚ฌ์ด์ฆˆ๋„ ์ปค์ง€๊ณ  ์žˆ๋Š” ์ƒํ™ฉ์ด๋‹ค. ๊ทธ๋ž˜์„œ SRAM์„ ์ ์  ๋Š˜๋ ค๊ฐ€๊ณ  ์žˆ๋Š” ์ถ”์„ธ๋‹ค.

 

์บ์‹œ์™€ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์ด์—๋Š” Block ๋‹จ์œ„๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ  ๋ฐ›๋Š”๋‹ค๊ณ  ํ–ˆ๋‹ค.

์™œ ์ฃผ๋ณ€์˜ ๋ฉ”๋ชจ๋ฆฌ๊นŒ์ง€ ํ•œ ๋ฒˆ์— Block ๋‹จ์œ„๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์–ด๋“ค์ผ๊นŒ?

์•ž์„œ ๋งํ–ˆ๋“ฏ์ด ์ฐธ์กฐ ์ง€์—ญ์„ฑ์— ์˜ํ•ด ๋‹ค์Œ ๋ฒˆ ๋ฉ”๋ชจ๋ฆฌ์— ์ ‘๊ทผํ•  ๋•Œ์—๋Š” ํ˜„์žฌ CPU๊ฐ€ ์ ‘๊ทผํ•˜๊ณ  ์žˆ๋Š” ๋ฐ์ดํ„ฐ ์ฃผ๋ณ€์— ์žˆ๋Š” ๋ฐ์ดํ„ฐ์— ์ ‘๊ทผํ•  ๊ฐ€๋Šฅ์„ฑ์ด ๋†’๋‹ค.
๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ์ฃผ๋ณ€์— ์žˆ๋Š” ๋ฐ์ดํ„ฐ๊นŒ์ง€ ํ†ต์งธ๋กœ ์ฝ์–ด์˜จ๋‹ค.

=> ํ•œ ๋ฒˆ ๊ฐ€์ ธ์˜ฌ ๋•Œ ๋งŽ์ด ๊ฐ€์ ธ์™€์„œ ๋ฉ”๋ชจ๋ฆฌ์— ์ ‘๊ทผํ•˜๋Š” ๋นˆ๋„๋ฅผ ์ค„์ด์ž!

 

๊ทธ๋ ‡๋‹ค๋ฉด Block์˜ ์‚ฌ์ด์ฆˆ๋Š” ์–ด๋А ์ •๋„๋กœ ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์„๊นŒ?

Block์˜ ์‚ฌ์ด์ฆˆ๊ฐ€ ์ปค์งˆ์ˆ˜๋ก ์บ์‹œ ๋ฏธ์Šค ๋นˆ๋„๊ฐ€ ์ค„์–ด๋“œ๋Š” ๊ฒƒ์€ ๋งž์ง€๋งŒ ๊ณผ๋„ํ•˜๊ฒŒ ์ปค์ง€๋ฉด ์ž์ฃผ ์ ‘๊ทผ๋˜์ง€ ์•Š๋Š” ๋ฐ์ดํ„ฐ๊นŒ์ง€ ์บ์‹œ์— ์ฝ์–ด๋“ค์ผ ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์•„์ง„๋‹ค.

ํ˜„์žฌ ์ ‘๊ทผํ•˜๊ณ  ์žˆ๋Š” ๋ฐ์ดํ„ฐ์—์„œ ๋ฉ€์–ด์งˆ ์ˆ˜๋ก ์ดํ›„์— ์ ‘๊ทผ๋  ๊ฐ€๋Šฅ์„ฑ์ด ๋–จ์–ด์ง€๋‹ˆ๊นŒ.

๊ทธ๋Ÿฌ๋ฉด ์ธ๊ธฐ์—†๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ๊ณต๊ฐ„์„ ์ฐจ์ง€ํ•˜๊ฒŒ ๋˜์–ด ์บ์‹œ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋‚ญ๋น„ํ•˜๊ฒŒ ๋  ์ˆ˜ ์žˆ๋‹ค.

๋”ฐ๋ผ์„œ "์ ์ ˆํ•œ" ์‚ฌ์ด์ฆˆ๋กœ ๋งŒ๋“ค์–ด์•ผ ํ•œ๋‹ค.

=> ์ ์ ˆํ•œ ์‚ฌ์ด์ฆˆ๋ฅผ ์ด๋ก ์ ์œผ๋กœ ๊ตฌํ•  ์ˆœ ์—†๊ณ  ๊ฒฝํ—˜์ ์œผ๋กœ ๊ตฌํ•ด์ ธ์„œ ์“ฐ์ด๊ณ  ์žˆ์Œ.

 

Replacement Algorithm


๋งŒ์•ฝ ์บ์‹œ๊ฐ€ ๊ฐ€๋“์ฐฌ ์ƒํƒœ์—์„œ ์บ์‹œ ๋ฏธ์Šค๊ฐ€ ๋ฐœ์ƒํ•ด์„œ ๋ฉ”๋ชจ๋ฆฌ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์–ด์™€์•ผ ํ•œ๋‹ค๋ฉด, ๊ธฐ์กด์— ์บ์‹œ์— ์žˆ๋˜ Block๋“ค ์ค‘์— ํ•œ Block์„ ๋ฐ€์–ด๋‚ด๊ณ  ์ƒˆ๋กœ์šด Block์„ ์ฝ์–ด์™€์•ผ ํ•œ๋‹ค.

  • ์ด๋•Œ๋Š” CPU๊ฐ€ ๋‹ค์Œ์— ์ ‘๊ทผํ•  ๊ฐ€๋Šฅ์„ฑ์ด ์ œ์ผ ๋‚ฎ์€ Block์„ ๋ฐ€์–ด๋‚ด์•ผ ํ•˜๋Š”๋ฐ, ์–ด๋–ค Block์ด ์ ‘๊ทผ๋  ๊ฐ€๋Šฅ์„ฑ์ด ๋‚ฎ์„ ์ง€ ์ •ํ™•ํžˆ๋Š” ์•Œ ์ˆ˜ ์—†์Œ.
  • ๊ณผ๊ฑฐ ๋ฐ์ดํ„ฐ๋ฅผ ์ด์šฉํ•ด์„œ ๊ทธ Block์„ ๊ฒฐ์ •ํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ์—ฌ๋Ÿฌ ๊ฐ€์ง€๊ฐ€ ์žˆ๋Š”๋ฐ ๊ทธ ์ค‘ LRU ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ด ์œ ๋ช…ํ•˜๋‹ค.

 

LRU(Least Recently Used) Algorithm?

  • ์ตœ๊ทผ์— ๊ฐ€์žฅ ๋œ ์ ‘๊ทผ๋œ ๋ฐ์ดํ„ฐ ๋ธ”๋ก์„ ์บ์‹œ์—์„œ ๋ฐ€์–ด๋‚ธ๋‹ค.
  • ์ตœ๊ทผ์— ์ž์ฃผ ์ ‘๊ทผ๋œ ๋ฐ์ดํ„ฐ๋Š” ๋˜๋‹ค์‹œ ์‚ฌ์šฉ๋  ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์„ ๊ฒƒ์ด๋ผ๋Š” ์ „์ œ๋ฅผ ๊น”๊ณ  ์‚ฌ์šฉํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜.

 

Write Policy


์“ฐ๊ธฐ ์—ฐ์‚ฐ์ด ๋ฐœ์ƒํ–ˆ์„ ๋•Œ, ์บ์‹œ์™€ ๋ฉ”๋ชจ๋ฆฌ์— ์–ด๋А ํƒ€์ด๋ฐ์— ๊ฐ’์„ ์“ธ ๊ฒƒ์ธ๊ฐ€?

๋ฉ”๋ชจ๋ฆฌ์— ๊ฐ’์„ ์“ฐ๋Š” operation์ด ๋ฐœ์ƒํ–ˆ์„ ๋•Œ, ๋ฉ”๋ชจ๋ฆฌ์— ์จ์•ผ ํ•  ๋ฐ์ดํ„ฐ๊ฐ€ ์บ์‹œ์—๋„ ์˜ฌ๋ผ์™€ ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ผ๋ฉด, ์บ์‹œ์— ์žˆ๋Š” ๊ฐ’์€ ๋‹น์—ฐํžˆ ๋ณ€๊ฒฝํ•ด์•ผ ํ•˜๊ณ  ๋ฉ”๋ชจ๋ฆฌ์— ์žˆ๋Š” ๊ฐ’๋„ ๋ณ€๊ฒฝํ•ด ์ฃผ์–ด์•ผ ์ผ๊ด€์„ฑ์ด ์œ ์ง€๋œ๋‹ค.

 

์ด๋•Œ ๊ฐ’์„ ์—…๋ฐ์ดํŠธ ํ•˜๋Š” ๋ฐฉ๋ฒ•์—๋Š” ๋‘ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์ด ์กด์žฌํ•œ๋‹ค.

  1. ๋งค๋ฒˆ ์บ์‹œ์— ๊ฐ’์„ ์“ธ ๋•Œ๋งˆ๋‹ค, ๋ฉ”๋ชจ๋ฆฌ์—๋„ ๊ฐ’์„ ์จ์ค€๋‹ค. (๋™์‹œ์— ์—…๋ฐ์ดํŠธ)
    => ์ด๋Ÿฌ๋ฉด write์— ๋Œ€ํ•ด์„œ๋Š” ์บ์‹œ๋ฅผ ์“ฐ๋Š” ํšจ๊ณผ๊ฐ€ ์—†์ง€ ์•Š์„๊นŒ?
  2. ์บ์‹œ์— ์žˆ๋Š” ๊ฐ’๋งŒ ๋ฐ”๊ฟจ๋‹ค๊ฐ€, ๋ฐ์ดํ„ฐ๊ฐ€ ์บ์‹œ์—์„œ ๋ฐ€๋ ค๋‚  ๋•Œ ์‹ค์ œ ๋ฉ”๋ชจ๋ฆฌ์— ๊ฐ€์„œ ๊ฐ’์„ ๋ฐ”๊ฟ”์ค€๋‹ค.
    => ๋ฐ”๋€ ์ ์ด ์žˆ๋‹ค๋Š” ๊ฒƒ์€ dirty bit์— ๊ธฐ๋กํ•ด๋‘”๋‹ค.

2๋ฒˆ์˜ ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ ๋ฉ”๋ชจ๋ฆฌ ์ ‘๊ทผ์ด ์ค„์–ด๋“ ๋‹ค๋Š” ์žฅ์ ์ด ์žˆ์ง€๋งŒ, ์บ์‹œ์— ์žˆ๋Š” ๋ฐ์ดํ„ฐ์™€ ๋ฉ”๋ชจ๋ฆฌ์— ์žˆ๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ์ผ์น˜ํ•˜์ง€ ์•Š์•„ ๋ฉ”๋ชจ๋ฆฌ์˜ ๋ฐ์ดํ„ฐ๋Š” ๊ณผ๊ฑฐ ๋ฐ์ดํ„ฐ(๋ถˆํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ)๊ฐ€ ๋˜์–ด๋ฒ„๋ฆฐ๋‹ค๋Š” ๋ถ€์ž‘์šฉ์ด ์žˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  2๋ฒˆ์˜ ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ Cache Coherence Problem ์ด๋ผ๋Š” ๋˜ ๋‹ค๋ฅธ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.

2๋ฒˆ์˜ ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ๋งค์ปค๋‹ˆ์ฆ˜์„ ์ œ๊ณตํ•ด์•ผ ํ•˜๋Š”๋ฐ, ์ด๋ฏธ ์ œ์‹œ๋˜์–ด ์žˆ๋‹ค.

 

Cache Coherence Problem?

2๋ฒˆ์˜ ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•œ๋‹ค๊ณ  ํ–ˆ์„ ๋•Œ, ๋งŒ์•ฝ CPU ์ฝ”์–ด๊ฐ€ ์—ฌ๋Ÿฌ ๊ฐœ์ธ ๊ฒฝ์šฐ ์ฝ”์–ด๋งˆ๋‹ค cache๋ฅผ ๊ฐ–๊ธฐ ๋•Œ๋ฌธ์— cache ๋ฉ”๋ชจ๋ฆฌ๋„ ์—ฌ๋Ÿฌ ๊ฐœ๊ฐ€ ์กด์žฌํ•˜๊ฒŒ ๋œ๋‹ค.
์ด๋•Œ ์บ์‹œ์— ์žˆ๋Š” ๊ฐ’๋งŒ ๋ณ€๊ฒฝํ•˜๊ฒŒ ๋˜๋ฉด ๊ฐ ์ฝ”์–ด๋งˆ๋‹ค ์บ์‹œ์— ๋‹ค๋ฅธ ๊ฐ’์ด ์ €์žฅ๋˜๋Š” ์ƒํ™ฉ์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค.
๊ฐ™์€ ๋ฉ”๋ชจ๋ฆฌ์— ๋Œ€ํ•œ ์บ์‹œ ๊ฐ’์ด์ง€๋งŒ ๊ฐ’์„ ๋ชจ๋‘ ๋‹ค๋ฅด๊ฒŒ ๊ฐ€์ง€๊ณ  ์žˆ๊ฒŒ ๋˜๋Š” ์…ˆ์ด๋‹ค
์ด๋Ÿฌ๋ฉด ๋ฌด๊ฒฐ์„ฑ์ด ๊นจ์ง„๋‹ค.
๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— 2๋ฒˆ์˜ ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋งค์ปค๋‹ˆ์ฆ˜์„ ๋ฐ˜๋“œ์‹œ ์ œ๊ณตํ•ด์•ผ ํ•œ๋‹ค.

๊ทธ๋ž˜์„œ ๋ณดํ†ต ์–ด๋–ป๊ฒŒ ํ•˜๋ƒ๋ฉด ์–ด๋–ค ๋ฐ์ดํ„ฐ๊ฐ€ ์ด์ชฝ ์บ์‹œ์—๋„ ์˜ฌ๋ผ์™€์žˆ๊ณ  ์ €์ชฝ ์บ์‹œ์—๋„ ์˜ฌ๋ผ์™€ ์žˆ๋‹ค๋ฉด ์ด์ชฝ ์บ์‹œ์—์„œ ์—…๋ฐ์ดํŠธ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ๋‹ค๋ฅธ ์ชฝ ์บ์‹œ์—๋‹ค๊ฐ€ Cache Invalidation Message๋ฅผ ๋ณด๋‚ด์„œ ๋„ˆ๊ฐ€ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ์บ์‹œ๊ฐ’์€ ์ž˜๋ชป๋œ ๊ฐ’์ด์•ผ ๋ผ๊ณ  ์•Œ๋ ค์ค€๋‹ค.
๊ทธ๋ฆฌ๊ณ  ํ•ด๋‹น ๊ฐ’์„ ์ฝ์œผ๋ ค ํ•˜๋ฉด ๋ฉ”๋ชจ๋ฆฌ๋‚˜ ๊ฐ’์„ ๋ณ€๊ฒฝํ•œ ์ฝ”์–ด์˜ ์บ์‹œ์—์„œ ์ตœ์‹  ๊ฐ’์„ ๋‹ค์‹œ ์ฝ์–ด์˜ค๋„๋ก ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•œ๋‹ค.

=> ๋ฉ€ํ‹ฐ ์ฝ”์–ด ์‹œ์Šคํ…œ์—์„œ ์ค‘์š”ํ•œ ๋ฌธ์ œ์ž„

Q. ์—ฌ๊ธฐ์„œ ๋‚˜๋Š” ํ•œ๊ฐ€์ง€ ์˜๋ฌธ์ด ๋“ค์—ˆ๋‹ค. ๊ต์žฌ์™€ ๊ต์ˆ˜๋‹˜์˜ ์„ค๋ช…์„ ๋“ค์œผ๋ฉด 2๋ฒˆ์˜ ๋ฐฉ์‹ ์ฆ‰, Write-Back ๋ฐฉ์‹์„ ์‚ฌ์šฉํ–ˆ์„ ๋•Œ๋งŒ Cache coherence problem์ด ๋ฐœ์ƒํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋“ค๋ ธ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ์ƒ๊ฐํ•ด๋ณด๋ฉด ๋ฉ€ํ‹ฐ ํ”„๋กœ์„ธ์„œ์˜ ๊ฒฝ์šฐ ๊ฐ ํ”„๋กœ์„ธ์„œ๋งˆ๋‹ค ์บ์‹œ๋ฅผ ๊ฐ–๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— Write-through ์ •์ฑ…์„ ์‚ฌ์šฉํ•œ๋‹ค๊ณ  ํ•˜๋”๋ผ๋„ ๊ฐ™์€ ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•œ ์บ์‹œ๊ฐ’์„ ๊ฐ ํ”„๋กœ์„ธ์„œ๋งˆ๋‹ค ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค๋ฉด ๊ฒฐ๊ตญ์€ ๋ฉ”๋ชจ๋ฆฌ์˜ ๊ฐ’์ด ์ฆ‰์‹œ ์ˆ˜์ •๋œ๋‹ค๊ณ  ํ•˜๋”๋ผ๋„ ์ž˜๋ชป๋œ ์บ์‹œ๊ฐ’์„ ๊ฐ€์ง€๊ณ  ์žˆ์„ ๊ฒƒ์ด๋‹ค.

A. ๊ทธ๋ž˜์„œ ๊ต์ˆ˜๋‹˜๊ป˜ ์งˆ๋ฌธ์„ ๋“œ๋ ธ๋”๋‹ˆ, ์‚ฌ์‹ค์€ Write back, Write through ๋ฐฉ์‹ ๋ชจ๋‘ Cache coherence problem์„ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•œ๋‹ค๊ณ  ํ•˜์…จ๋‹ค. ํ•˜์ง€๋งŒ ์š”์ฆ˜์€ ๋Œ€๋ถ€๋ถ„ Write back ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜๊ณ  Cache coherence protocol์„ ์„ค๊ณ„ํ•  ๋•Œ Write back ๋ฐฉ์‹์— ๋Œ€ํ•œ ๊ตฌํ˜„์ด ํ›จ์”ฌ ๋ณต์žกํ•˜๊ธฐ ๋•Œ๋ฌธ์— Write back ์ƒํ™ฉ์„ ์—ผ๋‘์— ๋‘๊ณ  ๋ง์„ ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ๋‹ค๊ณ  ํ•˜์…จ๋‹ค.

 

Disk Cache


๋””์Šคํฌ ์บ์‹œ๋Š” ๋ณ„๋„์˜ SRAM์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹Œ DRAM์„ ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉํ•œ๋‹ค. ๋ฉ”๋ชจ๋ฆฌ์™€ ํ•˜๋“œ ๋””์Šคํฌ ์‚ฌ์ด์˜ ์†๋„ ์ฐจ์ด๋ฅผ ๊ทน๋ณตํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ.

  • ๋ฉ”๋ชจ๋ฆฌ์˜ ํŠน์ • ์˜์—ญ์„ ๋”ฐ๋กœ ๋–ผ์„œ ๊ทธ ๋ถ€๋ถ„์€ ๋””์Šคํฌ์˜ ์ผ๋ถ€ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ๋ฐ์— ์‚ฌ์šฉํ•œ๋‹ค.
  • ํ–ฅํ›„์— ๋””์Šคํฌ์— ์ ‘๊ทผํ•˜๊ฒŒ ๋  ๋•Œ ๊ทธ ๋ฐ์ดํ„ฐ๊ฐ€ ๋””์Šคํฌ ์บ์‹œ์— ์˜ฌ๋ผ์™€ ์žˆ์œผ๋ฉด, ๋””์Šคํฌ์— ๊ฐ€์ง€ ์•Š๊ณ  ๋””์Šคํฌ ์บ์‹œ์—์„œ ์ฝ์–ด์˜จ ๋‹ค์Œ I/O๋ฅผ ์ˆ˜ํ–‰ํ•œ ๊ฒƒ์ฒ˜๋Ÿผ ์ฒ˜๋ฆฌํ•œ๋‹ค.
  • ๋””์Šคํฌ I/O๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๋•Œ ๋ฉ”๋ชจ๋ฆฌ์— ๋ถˆ๋Ÿฌ์˜จ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉ์ž ํ”„๋กœ๊ทธ๋žจ์— ๋„˜๊ฒจ์ฃผ๊ณ  ๋‚˜์„œ, ๋ฐ”๋กœ ์‚ญ์ œํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ Disk Cache์— ๋‚จ๊ฒจ๋‘”๋‹ค.

 

Computer System Organization


์ปดํ“จํ„ฐ ์‹œ์Šคํ…œ์€ ์–ด๋–ป๊ฒŒ ๊ตฌ์„ฑ์ด ๋˜์–ด ์žˆ์„๊นŒ?

์ปดํ“จํ„ฐ ์‹œ์Šคํ…œ์€ CPU์™€ ๋ฉ”๋ชจ๋ฆฌ, ๋ฒ„์Šค ๊ทธ๋ฆฌ๊ณ  (I/O๋ฅผ ๋ฐœ์ƒ์‹œํ‚ค๋Š”) ๋‚˜๋จธ์ง€ ์ฃผ๋ณ€ ์žฅ์น˜๋“ค๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๋‹ค.

์ด ๋ชจ๋“  ์žฅ์น˜๋“ค์€ ์‹œ์Šคํ…œ ๋ฒ„์Šค๋กœ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๊ณ , I/O๋Š” CPU์™€ ์žฅ์น˜๋“ค ์‚ฌ์ด์— ์ง์ ‘ ์ผ์–ด๋‚˜์ง€ ์•Š๊ณ , CPU์™€ ์žฅ์น˜๋“ค ์‚ฌ์ด์— ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋งค๊ฐœ๋กœ ํ•˜์—ฌ ์ผ์–ด๋‚œ๋‹ค.

๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์ดํด์„ ์„œ๋กœ ์‚ฌ์šฉํ•˜๋ ค๊ณ  ๊ฒฝ์Ÿ์ด ๋ฐœ์ƒํ•œ๋‹ค.

CPU์™€ ์ฃผ๋ณ€์˜ ์žฅ์น˜๋“ค์€ ๋ณ„๋„๋กœ(๋…๋ฆฝ์ ์œผ๋กœ) ๋Œ์•„๊ฐ„๋‹ค. CPU๊ฐ€ ์ผ์„ ํ•˜๋‹ˆ๊นŒ ์ฃผ๋ณ€ ์žฅ์น˜๋“ค์€ ์ผ์„ ๋ชป ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ, CPU๊ฐ€ ๋ฐ”์  ๋•Œ ์ฃผ๋ณ€์˜ ์žฅ์น˜๋“ค๋„ ๊ฐ™์ด ๋ฐ”์  ์ˆ˜ ์žˆ๋‹ค.

=> ๋ฉ”๋ชจ๋ฆฌ ์ ‘๊ทผ ์—ญ์‹œ ๋…๋ฆฝ์ ์œผ๋กœ ๋ฐœ์ƒํ•˜๊ฒŒ ๋˜๊ณ  ๋”ฐ๋ผ์„œ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์ดํด์— ๋Œ€ํ•ด์„œ ๊ฒฝ์Ÿ์ด ๋ฐœ์ƒํ•˜๊ฒŒ ๋œ๋‹ค.

 

I/O ๋””๋ฐ”์ด์Šค๋“ค์„ ์‹ค์ œ๋กœ ๊ตฌ๋™ํ•˜๋Š” ๋†ˆ์€ ๋ˆ„๊ตฌ์ผ๊นŒ?

๊ฐ๊ฐ์˜ I/O ์žฅ์น˜๋“ค๋งˆ๋‹ค Controller๊ฐ€ ๋ฐ˜๋“œ์‹œ ์กด์žฌํ•œ๋‹ค.

Controller๊ฐ€ I/O ์žฅ์น˜๋ฅผ ์ง์ ‘์ ์œผ๋กœ ์ œ์–ด๋ฅผ ํ•˜๊ฒŒ ๋˜๊ณ , ์ด Controller๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ์— ์ ‘๊ทผํ•ด์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์–ด๊ฐ€๊ฑฐ๋‚˜ ์“ด๋‹ค.

๊ฐ๊ฐ์˜ Device controller๋Š” ์•ˆ์— local buffer๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด, ํ•˜๋“œ๋””์Šคํฌ๋ผ๊ณ  ํ•˜๋ฉด ํ•˜๋“œ๋””์Šคํฌ ์•ˆ์— controller๋ผ๋Š” ์นฉ์ด ๋“ค์–ด์žˆ๊ณ  ๊ทธ ์•ˆ์— buffer๊ฐ€ ์žˆ๋‹ค.

์‹ค์ œ๋กœ I/O๊ฐ€ ๋ญ๋ƒํ•˜๋ฉด ๋ฉ”๋ชจ๋ฆฌ์— ์žˆ๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ controller์˜ buffer๋กœ ๋‚˜๊ฐ€๋Š” ๊ฒƒ์„ Output์ด๋ผ๊ณ  ํ•œ๋‹ค. ๋ฐ˜๋Œ€๋กœ controller์˜ buffer์— ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋ฉ”๋ชจ๋ฆฌ๋กœ ๊ฐ€์ ธ์˜ค๋Š” ๊ฒƒ์„ Input์ด๋ผ๊ณ  ํ•œ๋‹ค.

์‹ค์ œ๋กœ "๋ฉ”๋ชจ๋ฆฌ์— ์žˆ๋Š” ๋ช‡ ๋ฒˆ์ง€์— ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ € I/O ์žฅ์น˜์— ์จ๋ผ"๋ผ๋Š” I/O ๋ช…๋ น์–ด๋ฅผ CPU๊ฐ€ ์ˆ˜ํ–‰ํ•˜๊ฒŒ ๋œ๋‹ค๋ฉด, CPU๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ์— ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ I/O ์žฅ์น˜์˜ ๋ฒ„ํผ๋กœ Output ์‹œ์ผœ์ฃผ๊ณ  ํ•ด๋‹น ์žฅ์น˜์˜ controller์—๊ฒŒ ๋ฐฉ๊ธˆ ๋ณด๋‚ด์ค€ ๋ฐ์ดํ„ฐ๋ฅผ ์žฅ์น˜ ์•ˆ์— ์“ฐ๋ผ๊ณ  ๋ช…๋ น์„ ๋‚ด๋ฆผ. ๊ทธ๋Ÿฌ๋ฉด ์ปจํŠธ๋กค๋Ÿฌ๊ฐ€ ์‹ค์ œ ์žฅ์น˜์— ๊ฐ’์„ ์“ฐ๊ฒŒ ๋œ๋‹ค.

 

ํ•˜๋“œ ๋””์Šคํฌ๋ฅผ ์˜ˆ์‹œ๋กœ ๊ทธ ๊ณผ์ •์„ ์ž์„ธํ•˜๊ฒŒ ์‚ดํŽด๋ณด์ž.

ํ•˜๋“œ๋””์Šคํฌ์—๊ฒŒ Read ๋ช…๋ น์–ด๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด Controller๋Š” ๋งˆ๊ทธ๋„คํ‹ฑ ๋””์Šคํฌ์—์„œ ์ฝ์€ ๋ฐ์ดํ„ฐ๋ฅผ ์ž์‹ ์˜ ๋ฒ„ํผ์— ์˜ฌ๋ ค๋‘๊ณ  CPU์—๊ฒŒ Interrupt๋ฅผ ๋ณด๋‚ธ๋‹ค.

๊ทธ๋Ÿผ CPU๋Š” Interrupt๋ฅผ ๋ฐ›์•„์„œ ํ•ธ๋“ค๋Ÿฌ๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ฒŒ ๋˜๊ณ  ํ•ธ๋“ค๋Ÿฌ๋ฅผ ํ†ตํ•ด ์žฅ์น˜์˜ ๋ฒ„ํผ์—์„œ ๊ฐ’์„ ๊ฐ€์ ธ๊ฐ€์„œ ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅํ•œ๋‹ค.

์ฆ‰, ์ปจํŠธ๋กค๋Ÿฌ๋Š” ์ ˆ๋Œ€๋กœ ๋ฉ”์ธ ๋ฉ”๋ชจ๋ฆฌ์— ์ง์ ‘ ๊ฐ’์„ ์“ฐ์ง€ ์•Š๋Š”๋‹ค. ๊ทธ ๋Œ€์‹  ์ž์‹ ์˜ ๋ฒ„ํผ์— ๊ฐ’์„ ์˜ฌ๋ ค๋‘๊ณ  I/O๊ฐ€ ๋๋‚ฌ๋‹ค๋Š” Interrupt๋ฅผ ๋ณด๋‚ธ๋‹ค.

๊ทธ๋Ÿฌ๋ฉด ๊ทธ ๋ฒ„ํผ์— ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์‹ค์ œ๋กœ ๋ฉ”๋ชจ๋ฆฌ์— ๊ฐ€์ ธ์˜ค๋Š” ์—ญํ• ์€ Interrupt handler๊ฐ€ ํ•˜๊ฒŒ ๋œ๋‹ค.

 

์™œ ์ด๋ ‡๊ฒŒ ํ• ๊นŒ? ํ•˜๋“œ๋””์Šคํฌ๊ฐ€ ์ง์ ‘ ๋ฉ”๋ชจ๋ฆฌ์— ๊ฐ’์„ ์“ฐ๋ฉด ๋˜์ง€ ์•Š๋‚˜?? ๊ทธ๋ฆฌ๊ณ  CPU๊ฐ€ ๊ฐ€์ ธ๊ฐ€๋ฉด ๋˜์ง€ ์•Š๋‚˜?

CPU ์ž…์žฅ์—์„œ๋Š” ํ•˜๋“œ๋””์Šคํฌ๊ฐ€ ๋ฌด์Šจ ์ง“์„ ์ €์ง€๋ฅผ์ง€ ๋ฏฟ์ง€ ๋ชปํ•จ. ํ•˜๋“œ๋””์Šคํฌ๋Š” ๋ฉ”์ธ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ์–ด๋–ป๊ฒŒ ์ƒ๊ธด์ง€๋ฅผ ๋ชจ๋ฅด๊ธฐ ๋•Œ๋ฌธ์— ์ž˜๋ชป๋œ ์œ„์น˜์— ๊ฐ’์„ ์จ๋ฒ„๋ฆฌ๋ฉด ์‹œ์Šคํ…œ์ด ๋ง๊ฐ€์ง€๊ฒŒ ๋œ๋‹ค.

๊ทธ๋ž˜์„œ ์ฃผ๋ณ€ ์žฅ์น˜๋“ค์€ ๋ฉ”๋ชจ๋ฆฌ์— ๋Œ€ํ•œ ์ ‘๊ทผ ๊ถŒํ•œ์„ ๊ฐ€์ง€์ง€ ๋ชปํ•œ๋‹ค. ์˜ค์ง CPU๋งŒ์ด ์ ‘๊ทผ ๊ถŒํ•œ์„ ๊ฐ€์ง. ์•ˆ์ „์„ ์œ„ํ•ด์„œ!

 

Programmed I/O

CPU๊ฐ€ I/O module์—๊ฒŒ ๊ฐ’์„ ์ฝ์–ด๋‹ฌ๋ผ๊ณ  Issue๋ฅผ ํ•˜๋ฉด, I/O ๋ชจ๋“ˆ์€ ์žฅ์น˜์—์„œ ๊ฐ’์„ ์ฝ๊ธฐ ์‹œ์ž‘ํ•œ๋‹ค.

๊ทธ๋ฆฌ๊ณ  CPU๋Š” ๊ณ„์†ํ•ด์„œ ๊ฐ’์„ ๋‹ค ์ฝ์—ˆ๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๊ณผ์ •์„ ๊ฑฐ์นœ๋‹ค. I/O module์ด ๋‹ค ์ฝ์—ˆ๋‹ค๋Š” status๋ฅผ ๋ณด๋‚ด์ค„ ๋•Œ๊นŒ์ง€ CPU๋Š” ๊ณ„์† ๋‹ค ์ฝ์—ˆ๋ƒ๊ณ  ๋ฌผ์–ด๋ด์•ผ ํ•œ๋‹ค.

๊ฐ’์„ ๋‹ค ์ฝ์—ˆ๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด CPU๋ฅผ ์“ฐ๋ฉด์„œ ๋ฌดํ•œ๋ฃจํ”„๋ฅผ ๋„๋Š” ๋น„ํšจ์œจ์ ์ธ ์ƒํ™ฉ์ด ๋ฐœ์ƒํ•œ๋‹ค.

๋˜ํ•œ CPU๋Š” ํ•œ ๋ฒˆ์— ํ•œ ์›Œ๋“œ์”ฉ ์ฝ์–ด์˜ค๊ธฐ ๋•Œ๋ฌธ์— ๋งŒ์•ฝ 1000์›Œ๋“œ์งœ๋ฆฌ ๋ฐ์ดํ„ฐ๋ผ๊ณ  ํ•˜๋ฉด ์ „์ฒด ๊ณผ์ •์„ 1000๋ฒˆ ๋ฐ˜๋ณตํ•ด์•ผ ํ•œ๋‹ค.

๊ต‰์žฅํžˆ ๋น„ํšจ์œจ์ ์œผ๋กœ ๋ณด์ด์ง€๋งŒ ์™œ ์ด๋ ‡๊ฒŒ ๋ฐ–์— ํ•  ์ˆ˜๊ฐ€ ์—†๋ƒ๋ฉด, I/O์˜ ์ตœ์ข… ์ข…์ฐฉ์ง€๋Š” ๋ฉ”๋ชจ๋ฆฌ์— ๋ฐ์ดํ„ฐ๋ฅผ ์˜ฌ๋ฆฌ๋Š” ๊ฒƒ์ธ๋ฐ ์•„๊นŒ I/O ์žฅ์น˜๊ฐ€ ์ง์ ‘ ์ ์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ์— ๊ฐ’์„ ์“ฐ์ง€ ๋ชปํ•˜๊ฒŒ ์ œ์–ด๋ฅผ ํ•œ๋‹ค๊ณ  ํ–ˆ๋‹ค.

CPU๋Š” I/O ๋‹จ์œ„๊ฐ€ ์›Œ๋“œ ๋‹จ์œ„์ด๊ณ  CPU๊ฐ€ ์ง์ ‘ I/O ์žฅ์น˜ ์ปจํŠธ๋กค๋Ÿฌ์˜ ๋ฒ„ํผ์—์„œ ์ฝ์–ด์„œ ๋ฉ”๋ชจ๋ฆฌ์— ๊ฐ’์„ ์จ์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์–ด์ฉ” ์ˆ˜ ์—†์ด ๋ฃจํ”„๋ฅผ ๋Œ์•„์„œ ํ•œ ์›Œ๋“œ์”ฉ ์ฝ์–ด I/O๋ฅผ ๋๋‚ผ ์ˆ˜ ๋ฐ–์— ์—†๋‹ค.

 

Interrupt๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด I/O ์žฅ์น˜ํ•œํ…Œ ๋‹ค ์ฝ์—ˆ๋ƒ๊ณ  ๋ฌผ์–ด๋ณด๋Š” ๋™์ž‘์„ ํ•˜์ง€ ์•Š์•„๋„ ๋  ๊ฒƒ ๊ฐ™๋‹ค!

 

Interrupt-Driven I/O

Interrupt-Driven I/O๋Š” CPU๊ฐ€ I/O ์žฅ์น˜์—๊ฒŒ Read๋ฅผ ํ•˜๋ผ๊ณ  Issue๋งŒ ํ•ด๋‘” ๋‹ค์Œ I/O ์žฅ์น˜๊ฐ€ ๋‹ค ์ฝ์—ˆ๋‹ค๊ณ  Interrupt๋ฅผ ๋ณด๋‚ผ ๋•Œ๊นŒ์ง€ ๋‹ค๋ฅธ ์ผ์„ ํ•˜๋ฉด์„œ ๊ธฐ๋‹ค๋ฆฐ๋‹ค.

=> ์•„๊นŒ์ฒ˜๋Ÿผ ๋‹ค ์ฝ์—ˆ๋ƒ๊ณ  ๋ฌผ์–ด๋ณด๋Š” ๋ฌดํ•œ ๋ฃจํ”„๋Š” ๋Œ์ง€ ์•Š์•„๋„ ๋˜๊ธฐ ๋•Œ๋ฌธ์— ํ›จ์”ฌ ํšจ์œจ์ ์ด๋‹ค.

 

๊ทผ๋ฐ ์—ฌ์ „ํžˆ ๋ฐ”๊นฅ์ชฝ ๋ฃจํ”„๋Š” ํ•ด๊ฒฐ ๋ชป ํ–ˆ์Œ

=> CPU๊ฐ€ ์›Œ๋“œ ๋‹จ์œ„๋กœ ์ฝ๊ธฐ ๋•Œ๋ฌธ์— ๊ทผ๋ณธ์ ์œผ๋กœ ํ•ด๊ฒฐ ๋ถˆ๊ฐ€๋Šฅํ•จ.

=> ์ด๊ฑธ ํ•ด๊ฒฐํ•˜๋ ค๋ฉด I/O ๋””๋ฐ”์ด์Šค๊ฐ€ ์ง์ ‘ ๋ฉ”๋ชจ๋ฆฌ์— ๊ฐ’์„ ์“ธ ์ˆ˜ ์žˆ๋„๋ก ํ•ด์ค˜์•ผ ํ•œ๋‹ค. ๋””๋ฐ”์ด์Šค๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฉ”๋ชจ๋ฆฌ์— ๋ชจ๋‘ ์จ๋‘” ๋‹ค์Œ์— Interrupt๋ฅผ ๋ณด๋‚ด์„œ ๋‹ค ์ผ์Œ์„ ์•Œ๋ฆฌ๋ฉด ๋˜๋Š”๋ฐ, ์ด๊ฑด ๋„์ €ํžˆ ํ—ˆ๋ฝํ•  ์ˆ˜๊ฐ€ ์—†์Œ. I/O ์žฅ์น˜๋Š” ๋ชป ๋ฏฟ๊ธฐ ๋•Œ๋ฌธ์—.

 

์ด ๋™์ž‘์„ ๊ผญ CPU๊ฐ€ ํ•ด์•ผํ• ๊นŒ?

์ผ๋‹จ I/O ์žฅ์น˜์—๊ฒŒ ๋ฉ”๋ชจ๋ฆฌ ์ ‘๊ทผ์„ ํ—ˆ์šฉํ•˜๋Š” ๊ฑด ์ ˆ๋Œ€ ๋ถˆ๊ฐ€๋Šฅ. (๋ชป ๋ฏฟ๊ธฐ ๋•Œ๋ฌธ์—)

๊ทธ๋ž˜์„œ ์ƒ๊ฐํ•œ ๋ฐฉ๋ฒ•์ด ๋ฏฟ์„ ์ˆ˜ ์žˆ๋Š” ์กด์žฌ๋ฅผ ํ•˜๋‚˜ ๋งŒ๋“ค์–ด์„œ ์ง€๊ธˆ CPU๊ฐ€ ํ•˜๋Š” ์ผ์„ ๋Œ€์‹ ํ•˜๊ฒŒ ํ•˜๋ฉด ๋˜์ง€ ์•Š์„๊นŒ? ๋ผ๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค.

๊ทธ ์กด์žฌ๊ฐ€ ๋ฐ”๋กœ DMA(Direct Memory Access)

=> ์ด๋ฆ„๋งŒ ๋ด๋„ ์•Œ ์ˆ˜ ์žˆ๋“ฏ์ด ๋ฉ”๋ชจ๋ฆฌ์— ์ง์ ‘ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ๊ถŒํ•œ์„ ๊ฐ€์ง„ ์กด์žฌ๋‹ค.

 

DMA


CPU๋ฅผ ๋Œ€์‹ ํ•ด์„œ ๋ฉ”๋ชจ๋ฆฌ์— ๊ฐ’์„ ์จ์ค„ ๋ฏฟ์„ ๋งŒํ•œ ์กด์žฌ๊ฐ€ ๋ฐ”๋กœ DMA

 

I/O๋ฅผ ์œ„ํ•ด์„œ ๋ฉ”๋ชจ๋ฆฌ์— ์ ‘๊ทผํ•  ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•  ์™„์ „ํžˆ ๋…๋ฆฝ์ ์ธ ์žฅ์น˜๊ฐ€ DMA Controller๋‹ค.

DMA๊ฐ€ ์žˆ์œผ๋ฉด CPU ์ž…์žฅ์—์„œ I/O๊ฐ€ ๋งค์šฐ ๊ฐ„๋‹จํ•ด์ง„๋‹ค.

DMA controller๋Š” CPU๊ฐ€ ํ•ด์˜ค๋˜ word ๋‹จ์œ„๋กœ ๋ฉ”๋ชจ๋ฆฌ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ๊ณ  ์“ฐ๋˜ ์ผ์„ ๋Œ€์‹ ํ•ด์ฃผ๊ณ  ์ผ์ด ๋‹ค ๋๋‚˜๋ฉด Interrupt๋ฅผ ํ†ตํ•ด CPU์—๊ฒŒ ์ผ์ด ๋๋‚ฌ์Œ์„ ์•Œ๋ ค์คŒ.

=> DMA๋ผ๋Š” ์นฉ์„ ๋ฉ”์ธ ๋ณด๋“œ์— ๋ฐ•์•„๋†“๊ณ  DMA๋ฅผ ํ†ตํ•ด์„œ ๋ชจ๋“  I/O๋ฅผ ์ฒ˜๋ฆฌ.

=> ๊ทธ ๋™์•ˆ CPU๋Š” ๋‹ค๋ฅธ ์ผ์„ ํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์ผ์˜ ๋™์ž‘ ํšจ์œจ์ด ๋†’์•„์ง„๋‹ค.

 

Computer Startup


์ „์›์„ ์ผฐ์„ ๋•Œ ์ปดํ“จํ„ฐ๊ฐ€ ๋ถ€ํŒ…๋  ๋•Œ๊นŒ์ง€์˜ ๊ณผ์ •

์šด์˜์ฒด์ œ๋ฅผ ๊น”๊ธฐ ์ „์— ์ปดํ“จํ„ฐ๋ฅผ ํ‚ค๋ฉด ์–ด๋–ค ์ผ์ด ๋ฒŒ์–ด์งˆ๊นŒ?

์šด์˜์ฒด์ œ๊ฐ€ ์—†๋”๋ผ๋„ ์ฒ˜์Œ์— ํ•˜๋“œ์›จ์–ด๋ฅผ ์ฒดํฌํ•˜๋Š” ๊ธฐ๋ณธ์ ์ธ ๊ณผ์ •์€ ๋˜‘๊ฐ™์ด ์ผ์–ด๋‚œ๋‹ค.

DRAM์˜ ์‚ฌ์ด์ฆˆ๋Š” ์–ผ๋งˆ์ธ์ง€,, CPU๋Š” ๋ญ”์ง€,, ๋“ฑ๋“ฑ ์ฒดํฌํ•ด์„œ ํ™”๋ฉด์— ๋ฟŒ๋ ค์ค€๋‹ค.

=> ๊ทธ๋Ÿผ ์ด ๊ณผ์ •์€ ๋ˆ„๊ฐ€ ํ• ๊นŒ?? Bootstrap program์ด๋ผ๋Š” ํ”„๋กœ๊ทธ๋žจ์ด ํ•œ๋‹ค.

 

์ „์›์ด ๋“ค์–ด๊ฐ€๋ฉด ROM์— ์ €์žฅ๋œ bootstrap program์ด ๋ฉ”๋ชจ๋ฆฌ์— ๋กœ๋“œ๊ฐ€ ๋˜๊ณ  ๊ทธ ํ”„๋กœ๊ทธ๋žจ์„ CPU๊ฐ€ ์ˆ˜ํ–‰์„ ํ•˜๊ฒŒ ๋จ.

(์‹œ์Šคํ…œ์˜ ํ•˜๋“œ์›จ์–ด ์žฅ์น˜๋ฅผ initialize)
=> ์ด๊ฑด ์šด์˜์ฒด์ œ์™€ ์ƒ๊ด€์—†์ด ์ผ์–ด๋‚จ

ํ•˜๋“œ์›จ์–ด๋ฅผ ์ฒดํฌํ•˜๋Š” ๊ณผ์ •์ด ๋๋‚˜๋ฉด OS๋ฅผ ๋ฉ”๋ชจ๋ฆฌ๋กœ ๋กœ๋“œํ•œ๋‹ค.

OS ์ฝ”๋“œ๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ๋กœ ์˜ฌ๋ผ์™€์„œ OS ์ฝ”๋“œ์˜ ์ œ์ผ ์ฒซ๋ฒˆ์งธ ์ฝ”๋“œ(instruction)๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” PC๊ฐ€ ์„ธํŒ…์ด ๋˜๋ฉด ๊ทธ๋•Œ๋ถ€ํ„ฐ ์ด์ œ OS๊ฐ€ ๊ตฌ๋™์ด ๋˜๊ธฐ ์‹œ์ž‘ํ•œ๋‹ค.

OS๊ฐ€ ๊ตฌ๋™์ด ๋˜๋ฉด ๋ถ€ํŒ…์ด ์™„๋ฃŒ๊ฐ€ ๋œ ๊ฒƒ์ด๋‹ค.

728x90