1. Computer System Overview (2)
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์ด ๋ฐ์ํ์ ๋, ๋ฉ๋ชจ๋ฆฌ์ ์จ์ผ ํ ๋ฐ์ดํฐ๊ฐ ์บ์์๋ ์ฌ๋ผ์ ์๋ ๋ฐ์ดํฐ๋ผ๋ฉด, ์บ์์ ์๋ ๊ฐ์ ๋น์ฐํ ๋ณ๊ฒฝํด์ผ ํ๊ณ ๋ฉ๋ชจ๋ฆฌ์ ์๋ ๊ฐ๋ ๋ณ๊ฒฝํด ์ฃผ์ด์ผ ์ผ๊ด์ฑ์ด ์ ์ง๋๋ค.
์ด๋ ๊ฐ์ ์ ๋ฐ์ดํธ ํ๋ ๋ฐฉ๋ฒ์๋ ๋ ๊ฐ์ง ๋ฐฉ๋ฒ์ด ์กด์ฌํ๋ค.
- ๋งค๋ฒ ์บ์์ ๊ฐ์ ์ธ ๋๋ง๋ค, ๋ฉ๋ชจ๋ฆฌ์๋ ๊ฐ์ ์จ์ค๋ค. (๋์์ ์
๋ฐ์ดํธ)
=> ์ด๋ฌ๋ฉด write์ ๋ํด์๋ ์บ์๋ฅผ ์ฐ๋ ํจ๊ณผ๊ฐ ์์ง ์์๊น? - ์บ์์ ์๋ ๊ฐ๋ง ๋ฐ๊ฟจ๋ค๊ฐ, ๋ฐ์ดํฐ๊ฐ ์บ์์์ ๋ฐ๋ ค๋ ๋ ์ค์ ๋ฉ๋ชจ๋ฆฌ์ ๊ฐ์ ๊ฐ์ ๋ฐ๊ฟ์ค๋ค.
=> ๋ฐ๋ ์ ์ด ์๋ค๋ ๊ฒ์ 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๊ฐ ๊ตฌ๋์ด ๋๋ฉด ๋ถํ ์ด ์๋ฃ๊ฐ ๋ ๊ฒ์ด๋ค.