[OS] Cache
3๋ ๊ฐ ์ฐ์ ๊ธฐ๋ฅ์์์ผ๋ก ๋ณต๋ฌด ํ๊ณ , ๋ณตํํด ์ปด๊ณต๊ณผ ์์ ์ ๋ฃ๊ณ ์์ต๋๋ค. ๊ทธ๋์ ๋ง์ด ๋ฐฐ์ ๋ค๊ณ ์๊ฐํ๋๋ฐ, ์ฌ์ ํ ๋ถ์กฑํ ๋ถ๋ถ์ด ๋ง๋ค์ ^^;; ์ญ์ ์ธ์๋ ๋๊ณ ๊ณต๋ถ์ ๊ธธ๋ ๋์ ๊ฒ ๊ฐ์ต๋๋ค.
๋ค์ด๊ฐ๋ฉฐ
์ ํฌ์คํธ๋ ์ด์์ฒด์ ๋ฅผ ๊ณต๋ถํ๋ฉด์ ์งง๊ฒ ๋ฉ๋ชจ ํ๋ ๊ฒ๋ค์ ๋ชจ์ ๊ธ ์ ๋๋ค. OS ๋ด์ฉ์ ๋ณต์ตํ๋ฉด์ ์ดํด๋ณด๋ฉด ์ข์ ๊ฒ ๊ฐ์ต๋๋ค ๐
Cache Write
- Write Through
- ์บ์ ๋ธ๋ก์ ์ ๋์ด ์์ ๋, ์ฆ์ ๋ฌผ๋ฆฌ ์ ์ฅ์์ ์ฐ๊ธฐ
- Write Back
- ์บ์ ๋ธ๋ก์ด ๊ต์ฒด ๋ ๋, ๋ฌผ๋ฆฌ ์ ์ฅ์์ ์ฐ๊ธฐ
Cache Lookups
- Fully-associative
- ๋จ์ ์ฌ๋กฏ ์ค์ ํ ๊ณณ์ ์ ์ฅํจ.
- ์บ์ ๊ฒ์ ๋๋, ๋ชจ๋ ์ฌ๋กฏ์ ์ ์ฒด ํ์ํด์ ๋งค์นญ ํ๋ ์ฌ๋กฏ์ด ์์ผ๋ฉด ๋ฐํ.
- Conflict Miss ํ์๊ฐ ๋ฎ์
- Direct-mapped
- Hash ํจ์๋ฅผ ์ฌ์ฉํด ์ฌ๋กฏ์ ์์น๋ฅผ ๊ฒฐ์ ํจ.
- ๋น ๋ฅธ ํ์
- Conflict Miss ํ์๊ฐ ๋์
- Set-associative
- Hash ํจ์๋ก ์ด๋ค ์ธํธ์ ์ ์ฅํ ์ง ๊ฒฐ์
- ์ธํธ๊ฐ ๊ฒฐ์ ๋๋ฉด, ๊ทธ ์ธํธ์ ์ฌ๋กฏ ์ค ํ๋์ ์ ์ฅํจ.
- ์บ์ ๊ฒ์ ๋๋, ๊ทธ ์ธํธ์ ์ฌ๋กฏ์ ์ ์ฒด ํ์.
Page Fault is Trap
Trap vs. Interrupt์ ๋ํด์ ์๊ธฐ ์ฐธ๊ณ !
Sys Call์ ๋ชจ๋ Trap์. HW ๊ด๋ จ ํธ๋ค๋ง์ Interrupt์.
Direct Memory Access
๋ณธ๋ ๋์คํฌ์ ๋ฐ์ดํฐ๋ฅผ ๋ฉ์ธ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฌํ๋ ค๋ฉด CPU๊ฐ ์ด๊ฑธ ์ํํด์ผ ํ์. ๊ทธ๋ฐ๋ฐ, CPU ๋์ ์ด ์์ ์ ์์ ๋ฐ์ ์ํํ๋ ํ ํฌ๋์.
Bookkeeping Bits
- page modified
- page recently used
Bookkeeping Bits๋ TLB์ Page Table ๋๋ค ๊ด๋ฆฌํ๊ณ , Page ์์ ์ด๋ ์ ๊ทผ์ด ๋ฐ์ ํ์ ๋, ๋ ๊ณณ ๋ชจ๋์ ๋ฐ์ํจ. (19p)
Cache Replacement Policy
Cache miss๊ฐ ๋ฐ์ ํ์ ๋, ์ด๋ค ์บ์ ์ฌ๋กฏ์ evict ํ ๊ฑด์ง!!
Hashing ๊ธฐ๋ฐ์ผ๋ก ์บ์์ ์ ๊ทผํ๋ Direct Mapped Cache์์๋ ๊ณ ๋ คํ์ง ์์๋ ๋จ!
MIN (best algorithm)
์ต์ ์ Cache Exchange ์๊ณ ๋ฆฌ์ฆ์ด ์ฆ๋ช ๋จ. Cache Miss ํ์๊ฐ ๊ฐ์ฅ ์ ์.
์์ผ๋ก ๊ฐ์ฅ ์ค๋ซ๋์ ์ฌ์ฉ๋์ง ์์ ์บ์ ํญ๋ชฉ์ Evict ํ๋ ์ ๋ต์
LRU (near best)
MIN์ ๊ฐ์ฅ ๊ทผ์ ํ ์๊ณ ๋ฆฌ์ฆ.
ํ์ฌ ์บ์ ์ฌ๋กฏ์ ์ฌ๋ผ๊ฐ ํญ๋ชฉ ์ค์์ ๊ฐ์ฅ ์ค๋ซ๋์ ์ฌ์ฉํ์ง ์์ ํญ๋ชฉ์ Evict ํ๋ ์ ๋ต.
Cache ์ฌ์ด์ฆ๋ฅผ ๋๋ฆฌ๋ฉด Miss๊ฐ ์ค์ด๋ค๊น?
Nope! ์บ์ ์ฌ์ด์ฆ๋ฅผ ๋๋ ค๋ Cache Miss ํ์๊ฐ ์ค์ง ์๋ ๊ฒฝ์ฐ๋ ์์. (Beladyโs Anomaly๋ผ๊ณ ํจ.) (34p)
์ฌ์ค ์ ๋ฌธ์ ๋ FIFO์์๋ง ๋ฐ์ํ๋ ๊ฑฐ๋ผ๊ณ ํจ. ์ด์ ๋ ์บ์ ์ฌ๋กฏ ์๊ฐ ์ฆ๊ฐํ๋ฉด์, ๊ต์ฒด ์์๊ฐ ๋ฐ๋๋ฉด์ ์คํ๋ ค ๋ถ๋ฆฌํ๊ฒ ๋์ํ ์ ์์ด์๋ผ๊ณ ํจ. LRU์์๋ ๊ฒช์ง ์๋๋ค๊ณ ํจ.
Page Pool
ppt ๋ด์ฉ์ ์ฝ๋๋ฐ, ์ค๋ช ์ด ๋ช ํํ์ง ์์์ ์ดํดํ๋๋ฐ ํ์ฐธ ๊ฑธ๋ฆผ;;
Frame Table์ ์๋ ํ์ด์ง๋ค์ ์ต๊ทผ ์ฌ์ฉ ์ฌ๋ถ๋ฅผ ๋ณด์กฐ ํด์ฃผ๋ ์๋ฃ๊ตฌ์กฐ์ด์ ๋ฉ์ปค๋์ฆ์.
Page Pool์์ ๊ฐ ํ์ด์ง๋ฅผ ํด๋ฆฐ ํ์ด์ง์ ๋ํฐ ํ์ด์ง๋ก ๊ตฌ๋ถํจ. Page Fault๋ก ์ธํด Frame Table์์ ํ์ด์ง๋ฅผ ํ๋ ๋น์์ผ ํ๋ ์ํฉ์ด๋ผ๋ฉด
- ํ์ด์ง๊ฐ ํด๋ฆฐ ํ์ด์ง๋ผ๋ฉด
- ์ฆ์ ๊ต์ฒด ๊ฐ๋ฅ
- ํ์ด์ง๊ฐ ๋ํฐ ํ์ด์ง๋ผ๋ฉด
- Write back ํ ๊ต์ฒด ๊ฐ๋ฅ
์ฌ๊ธฐ๊น์ง๋ ๊ธฐ์กด Frame Table์ด๋ ๋์ผํจ. ํต์ฌ์ ์ง๊ธ๋ถํฐ์ธ๋ฐ, OS๋ Page Pool์ ๋น๋๊ธฐ(async)ํ๊ฒ ๊ด๋ฆฌํจ. ๊ทธ๋์ ์ฃผ๊ธฐ์ ์ผ๋ก ๋๋ฉด์ ๋ํฐ ํ์ด์ง๋ Write Back์ ์ํํด ํด๋ฆฐ ํ์ด์ง๋ก ๋ง๋ค์ด์ค.
์ด๊ฒ์ ๋ํฐ ํ์ด์ง๋ฅผ Write Back ํ๋๋ฐ ์๊ฐ์ด ๊ฑธ๋ฆฌ๋, ์ด๋ฐ ์ํฉ์ด Page Fault์์ ์ต๋ํ ๋ฐ์ํ์ง ์๋๋ก ํ๊ธฐ ์ํ ๋ฉ์ปค๋์ฆ์!
Thrashing
๊ฐ์ฉ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ด ์์ฃผ์์ฃผ ๋ฎ์์, ๋ฉ๋ชจ๋ฆฌ ์์ญ์ ์ ๊ทผํ ๋ ๋ง๋ค Page Fault๊ฐ ๋ฐ์ํ๊ฑฐ๋, ์์คํ ์ ๋ฐ์ ์ผ๋ก Page Fault ๋ฐ์ ๋น๋๊ฐ ๋์ ์ํ. ์ฌ๊ฐํ ์ฑ๋ฅ ์ ํ๊ฐ ์ผ์ด๋๊ณ ์๋ค๋ ์๋ฏธ์.
Working Set์ ์ง์ํด ์ค ๋งํผ ๋ฌผ๋ฆฌ ๋ฉ๋ชจ๋ฆฌ๊ฐ ์ถฉ๋ถํ์ง ๋ชป ํ ์ํฉ์์ ๋ฐ์ํจ.
์ด๋ฐ ํ์์ ๋ฐฉ์งํ๋ ค๋ฉด??
- ๊ฐ ํ๋ก์ธ์ค๊ฐ ํ์๋ก ํ๋ ์ต์ํ์ ํ๋ ์ ๊ฐฏ์๋ฅผ ๋ณด์ฅํด์ค์ผ ํจ.
- ์์คํ ์ ๋์์ ์คํ๋๋ ํ๋ก์ธ์ค ์๋ฅผ ์ค์ฌ์ ๋ฉ๋ชจ๋ฆฌ ๊ฒฐ์์ ์ํ ํ๋ค.
- ์ข๋ ํจ์จ์ ์ธ ํ์ด์ง ๊ต์ฒด ์๊ณ ๋ฆฌ์ฆ์ ์ฑํ ํ๋ค.
- ๊ทธ๋ฅ ๋ฌผ๋ฆฌ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฆ์คํ๋ค.
44p๋ถํฐ ๋ณผ ๊ฒ