์์ ๋ณธ ๊ฒ์ฒ๋ผ ํ์ด์ง์ ์๋นํ ์ฑ๋ฅ ์ ํ๋ฅผ ๊ฐ์ ธ์ฌ ์ ์๋ค. ์ฃผ์ ๋ณํ ์๋๋ฅผ ์ด๋ป๊ฒ ํฅ์ํ ๊น?
ํ๋์จ์ด์ ๋์์ ๋ฐ์์ผ ํ๋ค. ์ฃผ์ ๋ณํ์ ๋น ๋ฅด๊ฒ ํ๊ธฐ ์ํด์ ์ฐ๋ฆฌ๋ ๋ณํ ์์ธ ๋ฒํผ (Translation Lookaside Buffer, TLB) ๋ผ๋ ๊ฒ์ ๋์ ํ๋ค. ์นฉ์ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ ์ ๋ MMU์ ์ผ๋ถ์ด๋ค. ์์ฃผ ์ฐธ์กฐ๋๋ ๊ฐ์ ์ฃผ์ -> ์ค์ ์ฃผ์ ๋ณํ ์ ๋ณด๋ฅผ ์ ์ฅํ๋ ํ๋์จ์ด ์บ์์ด๋ค. ์ฃผ์ ๋ณํ ์บ์๊ฐ ์ข ๋ ์ ํํ ๋ช ์นญ์ด๋ผ๊ณ ํ ์ ์๋ค.
๊ฐ์ ๋ฉ๋ชจ๋ฆฌ ์ฐธ์กฐ ์, ํ๋์จ์ด๋ ๋จผ์ TLB์ ์ํ๋ ๋ณํ ์ ๋ณด๊ฐ ์๋์ง ํ์ธํ๊ณ , ๋ง์ฝ ์๋ค๋ฉด ํ์ด์ง ํ ์ด๋ธ์ ํตํ์ง ์๊ณ ์บ์๋ฅผ ํตํด ๋น ๋ฅด๊ฒ ์ฃผ์๋ฅผ ๋ณํํ๋ค.
1. TLB์ ๊ธฐ๋ณธ ์๊ณ ๋ฆฌ์ฆ

๋จผ์ ๊ฐ์ ์ฃผ์์์ ๊ฐ์ ํ์ด์ง ๋ฒํธ๋ฅผ ์ถ์ถํ๊ณ , ํด๋น VPN์ TLB ์กด์ฌ ์ฌ๋ถ๋ฅผ ๊ฒ์ฌํ๋ค. ๋ง์ฝ ์กด์ฌํ๋ฉด TLB ํํธ์ด๋ค. ์ฌ๊ธฐ์ PFN์ ์ถ์ถํ ์ ์๋ค. ํด๋น ํ์ด์ง์ ๋ํ ์ ๊ทผ ๊ถํ ๊ฒ์ฌ๊ฐ ์ฑ๊ณตํ๋ฉด, ๊ทธ ์ ๋ณด๋ฅผ ์๋ ๊ฐ์ ์ฃผ์์ ์คํ์ ๊ณผ ํฉ์ณ์ ์ํ๋ ๋ฌผ๋ฆฌ ์ฃผ์๋ฅผ ๊ตฌ์ฑํ๊ณ , ๋ฉ๋ชจ๋ฆฌ์ ์ ๊ทผํ ์ ์๋ค.
TLB์ ๋ณํ ์ ๋ณด๊ฐ ์กด์ฌํ์ง ์๋๋ค๋ฉด (TLB ๋ฏธ์ค) ํ ์ผ์ด ๋ง์์ง๋ค. ํ์ด์ง ํ ์ด๋ธ์ ์ ๊ทผํ๊ณ , ์ฐธ์กฐ๊ฐ ์ ํจํ๊ณ ์ ๊ทผ ๊ฐ๋ฅํ๋ค๋ฉด ์ด๋ฅผ TLB๋ก ๋ถ๋ฌ๋ค์ธ๋ค. TLB๊ฐ ๊ฐฑ์ ๋๋ฉด ํ๋์จ์ด๋ ๋ช ๋ น์ด๋ฅผ ์ฌ์คํํ๋ค. ์ด๋ฒ์๋ TLB์ ์กด์ฌํ๋ฏ๋ก ๋ฉ๋ชจ๋ฆฌ ์ฐธ์กฐ๊ฐ ๋น ๋ฅด๊ฒ ์ฒ๋ฆฌ๋๋ค.
๋ฉ๋ชจ๋ฆฌ ์ ๊ทผ์ ๋ค๋ฅธ CPU ์ฐ์ฐ์ ๋นํด ๋งค์ฐ ์๊ฐ์ด ์ค๋ ๊ฑธ๋ฆฌ๋ ์์ ์ด๋ค. TLB ๋ฏธ์ค๊ฐ ๋ง์ด ๋ฐ์ํ ์๋ก ๋ฉ๋ชจ๋ฆฌ ์ ๊ทผ ํ์๊ฐ ๋ง์์ง๋ค. TLB ๋ฏธ์ค๊ฐ ๋ฐ์ํ๋ ๊ฒฝ์ฐ๋ฅผ ์ต๋ํ ํผํด์ผ ํ๋ค.
2. ์์ : ๋ฐฐ์ด ์ ๊ทผ

์ด๋ ๊ฒ ๋ฐฐ์ด์ด ๊ตฌ์ฑ๋์ด ์์ ๋, a[0], a[3], a[7]์ ์ ๊ทผํ ๋ ๋นผ๊ณ ๋ชจ๋ TLB ํํธ์ด๋ค. ์ด ์์ ์์๋ 1 page๊ฐ 16 byte์ ํฌ๊ธฐ๋ฅผ ๊ฐ์ง๋๋ฐ ๋ง์ฝ ํ์ด์ง ํฌ๊ธฐ๊ฐ ๋ ์ปค์ง๋ค๋ฉด, TLB ํํธ ํ๋ฅ ์ด ๋ ์ฌ๋ผ๊ฐ ๊ฒ์ด๋ค.
์ผ๋ฐ์ ์ธ ๊ฒฝ์ฐ ํ์ด์ง๋ 4KB์ด๋ค. ์์ ์ฒ๋ผ ์ ์ ๋ฐฐ์ด์ ์ฐ์์ ์ผ๋ก ์ ๊ทผํ๋ ๊ฒฝ์ฐ ํ ๋ฒ์ ๋ฏธ์ค๋ง ๋ฐ์ํ ๊ฒ์ด๋ค.
์๊ฐ ์ง์ญ์ฑ(Temporal Locality): ์ด๋ ํ๋ก๊ทธ๋จ์ด ํ ๋ฒ ์ ๊ทผํ ๋ฉ๋ชจ๋ฆฌ ์์น๋ฅผ ๊ฐ๊น์ด ๋ฏธ๋์ ๋ค์ ์ ๊ทผํ ๊ฐ๋ฅ์ฑ์ด ๋๋ค๋ ๊ฐ๋ ์ ๋๋ค. ์๋ฅผ ๋ค์ด, ๋ฃจํ์์ ๋ฐ๋ณต์ ์ผ๋ก ์ฌ์ฉ๋๋ ๋ณ์๋ ๋ฐฐ์ด์ ์ด๋ฌํ ์ง์ญ์ฑ์ ์์ ๋๋ค. ์๊ฐ ์ง์ญ์ฑ์ ํ์ฉํ๋ฉด, ํ ๋ฒ ์ ๊ทผํ ๋ฐ์ดํฐ๋ฅผ ์บ์์ ์ ์ฅํ๊ณ , ๋ฏธ๋์ ์ ๊ทผ์์๋ ๋น ๋ฅด๊ฒ ์บ์์์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ฌ ์ ์์ต๋๋ค.
๊ณต๊ฐ ์ง์ญ์ฑ(Spatial Locality): ์ด๋ ํ๋ก๊ทธ๋จ์ด ํ ๋ฒ ์ ๊ทผํ ๋ฉ๋ชจ๋ฆฌ ์์น ์ฃผ๋ณ์ ๊ฐ๊น์ด ๋ฏธ๋์ ์ ๊ทผํ ๊ฐ๋ฅ์ฑ์ด ๋๋ค๋ ๊ฐ๋ ์ ๋๋ค. ์๋ฅผ ๋ค์ด, ์์ฐจ์ ์ผ๋ก ์คํ๋๋ ๋ช ๋ น์ด๋ ์ฐ์์ ์ธ ๋ฉ๋ชจ๋ฆฌ ์์น์ ์ ์ฅ๋ ๋ฐฐ์ด์ ์์๋ค์ ์ด๋ฌํ ์ง์ญ์ฑ์ ์์ ๋๋ค. ๊ณต๊ฐ ์ง์ญ์ฑ์ ํ์ฉํ๋ฉด, ๋ฐ์ดํฐ๋ฅผ ์บ์์ ๋ธ๋ก ๋จ์๋ก ๊ฐ์ ธ์ค๊ณ , ์ธ์ ํ ๋ฉ๋ชจ๋ฆฌ ์์น์ ๋ํ ์ ๊ทผ์์๋ ์บ์์์ ๋น ๋ฅด๊ฒ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ฌ ์ ์์ต๋๋ค.
3. TLB ๋ฏธ์ค๋ ๋๊ฐ ์ฒ๋ฆฌํ ๊น
ํ๋์จ์ด์์ ์ฒ๋ฆฌํ๋ ๋ฐฉ๋ฒ(CISC)๊ณผ ์ํํธ์จ์ด์์ ์ฒ๋ฆฌํ๋ ๋ฐฉ๋ฒ(RICS) ๋ ๊ฐ์ง๊ฐ ์๋ค.
ํ๋์จ์ด์์ ์ฒ๋ฆฌํ๋ ๊ฒฝ์ฐ, ํ๋์จ์ด๊ฐ ํ์ด์ง ํ ์ด๋ธ์ ๋ํ ๋ช ํํ ์ ๋ณด๋ฅผ ๊ฐ์ง๊ณ ์์ด์ผ ํ๋ค. ์ด๋ฅผ ์ํด์ ํ์ด์ง ํ ์ด๋ธ ๋ ์ง์คํฐ๋ฅผ ๋๊ณ , ์ด ๋ ์ง์คํฐ๋ก TLB๋ฅผ ๊ฐฑ์ ํ๋ค.

TLB์์ ์ฃผ์ ์ฐพ๋ ๊ฒ์ด ์คํจํ ๊ฒฝ์ฐ, ํ๋์จ์ด๋ ์์ธ ์๊ทธ๋์ ๋ฐ์์ํจ๋ค. ์๊ทธ๋์ ๋ฐ์ ์ด์์ฒด์ ๋ ์ ์ ์คํ์ ์ค๋จํ๊ณ ์ปค๋ ๋ชจ๋๋ก ๋ณ๊ฒฝํ ํ TLB ๋ฏธ์ค๋ฅผ ์ฒ๋ฆฌํ๋ ํธ๋ฉ ํธ๋ค๋ฌ๋ฅผ ์คํ์ํจ๋ค. ์ด ํธ๋ค๋ฌ๋ ํ์ด์ง ํ ์ด๋ธ์ ๊ฒ์ํ์ฌ ๋ณํ ์ ๋ณด๋ฅผ ์ฐพ๊ณ , TLB๋ฅผ ๊ฐฑ์ ํ ํ ๋ฆฌํดํ๋ค.
TLB๋ฅผ ์ํํธ์จ์ด๋ก ๊ด๋ฆฌํ๋ฉด ํ๋์จ์ด ๋ณ๊ฒฝ ์์ด ํ ์ด๋ธ ๊ตฌ์กฐ๋ฅผ ์ ์ฐํ๊ฒ ๋ณ๊ฒฝํ ์ ์๊ณ , ํ๋์จ์ด๊ฐ ์ฒ๋ฆฌํ ์ผ์ด ์์ด์ ๋ ๋จ์ํ๋ค.
4. TLB์ ๊ตฌ์ฑ: ๋ฌด์์ด ์๋?
TLB | PFN | ๋ค๋ฅธ ๋นํธ
๋ณํ ์ ๋ณด ์ ์ฅ ์์น์ ์ ์ฝ์ด ์๋๋ก, ๊ฐ ํญ๋ชฉ๋ง๋ค VPN, PFN์ด ์กด์ฌํ๋ค. TLB๋ ์์ ์ฐ๊ด ์บ์์ด๋ค. ๋ค๋ฅธ ๋นํธ๋ค์ ๋ฌด์์ ํ ๊น? TLB๋ ์ผ๋ฐ์ ์ผ๋ก valid bit๋ฅผ ๊ฐ์ง๊ณ ์๋ค. ์ด ๋นํธ๋ ํน์ ํญ๋ชฉ์ด ์ ํจํ ๋ณํ ์ ๋ณด๋ฅผ ๊ฐ์ง๊ณ ์๋์ง ์ฌ๋ถ๋ฅผ ๋ํ๋ธ๋ค. protection bit๋ ์ฝ๊ธฐ, ์ฐ๊ธฐ, ์คํ ๋ฑ ๊ถํ์ ๊ด๋ฆฌํ๋ค. ๊ทธ ์ธ์๋ ์ฃผ์ ๊ณต๊ฐ ์๋ณ์, ๋ํฐ ๋นํธ ๋ฑ ์ฌ๋ฌ ๋นํธ๊ฐ ์กด์ฌํ๋ค.
5. TLB์ ๋ฌธ์ : ๋ฌธ๋งฅ ๊ตํ
TLB์ ํ์ฌ๋ ๊ฐ์ ์ฃผ์์ ์ค์ ์ฃผ์ ๊ฐ์ ๋ณํ ์ ๋ณด๋ ๊ทธ๊ฒ์ ํ์ฌ์ํจ ํ๋ก์ธ์ค์์๋ง ์ ํจํ๋ค. ๋ค๋ฅธ ํ๋ก์ธ์ค๋ก context switch๊ฐ ์ผ์ด๋๋ฉด ์ด๋ป๊ฒ ํด์ผ ํ ๊น?
์ฒซ ๋ฒ์งธ ๋ฐฉ๋ฒ์ ๋ฌธ๋งฅ ๊ตํ์ ์ํํ ๋ ๋ค์ ํ๋ก์ธ์ค๊ฐ ์คํ๋๊ธฐ ์ TLB๋ฅผ ๋น์ฐ๋ ๊ฒ์ด๋ค. ๋ฌธ๋งฅ ๊ตํ์ด ์ผ์ด๋ ๋๋ง๋ค TLB๋ฅผ ๋น์ฐ๋ฉด ์๋ชป ์๋ํ๋ ๊ฒ์ ๋ง์ ์ ์๊ฒ ์ง๋ง TLB ๋ฏธ์ค๊ฐ ๋ง์ด ๋ฐ์ํ ๊ฒ์ด๋ค.
์ด ๋ถ๋ด์ ๊ฐ์ ํ๊ธฐ ์ํด ๋ช๋ช ์์คํ ์์๋ ๋ฌธ๋งฅ ๊ตํ์ด ๋ฐ์ํ๋๋ผ๋ TLB์ ๋ด์ฉ์ ๋ณด์กดํ ์ ์๋ ํ๋์จ์ด ๊ธฐ๋ฅ์ ์ถ๊ฐํ์๋ค. TLB ๋ด์ ์ฃผ์ ๊ณต๊ฐ ์๋ณ์ (Address Space Identifier) ํ๋๋ฅผ ์ถ๊ฐํ๋ ๊ฒ์ด๋ค.

์ด๋ฅผ ํตํด ํ๋ก์ธ์ค ๋ณ๋ก TLB ๋ณํ ์ ๋ณด๋ฅผ ๊ตฌ๋ถํ ์ ์๋ค.
6. ์ด์: ๊ต์ฒด ์ ์ฑ
๋ชจ๋ ์บ์๊ฐ ๊ทธ๋ฌํ๋ฏ, TLB์์๋ ์บ์ ๊ต์ฒด ์ ์ฑ ์ด ๋งค์ฐ ์ค์ํ๋ค. TLB์ ์๋ก์ด ํญ๋ชฉ์ ํ์ฌํ ๋ ์ด๋ค ํญ๋ชฉ์ ๊ต์ฒด ๋์์ผ๋ก ์ ์ ํด์ผ ํ ๊น?
์ด ๋ด์ฉ์ ๋์คํฌ, ๋ฉ๋ชจ๋ฆฌ ๊ฐ์ ํ์ด์ง ์ค์ ๋ถ๋ถ์์ ์์ธํ ๋ค๋ฃจ๊ณ , ์ง๊ธ์ ๋ช ๊ฐ์ ์ผ๋ฐ์ ์ธ ์ ์ฑ ๋ค๋ง ์์ฝํ๋๋ก ํ์.
์ต์ ์ฌ์ฉ ๋น๋(least-recently-used, LRU) ๊ฐ ๊ฐ์ฅ ํํ ๋ฐฉ๋ฒ์ด๋ค. ์ฌ์ฉ๋์ง ์์ ์ค๋๋ ํญ๋ชฉ์ผ์๋ก ์์ผ๋ก๋ ์ฌ์ฉ๋ ๊ฐ๋ฅ์ฑ์ด ์ ์ผ๋ฉฐ, ๊ต์ฒด ๋์์ผ๋ก ์ ํฉํ ๊ฒ์ด๋ค.
๋๋คํ๊ฒ ๊ณ ๋ฅด๋ ๋ฐฉ๋ฒ๋ ์ผ๋ฐ์ ์ด๋ค. ์ด๋ ๊ตฌํ์ด ๊ฐ๋จํ๊ณ ์์ธ ์ํฉ์ ๋ฐ์์ ํผํ ์ ์๋ค.
LRU๊ฐ์ ํฉ๋ฆฌ์ ์ธ ์ ์ฑ ์ ๊ฐ์ ๋ณํ ์ ๋ณด๋ฅผ ์ ์ฅํ ์ ์๋ TLB๊ฐ ๊ฐ์ ํ์ด์ง๋ค์ ๋ํด ๋ฐ๋ณต๋ฌธ์ ์ํํ๋ ํ๋ก๊ทธ๋จ์์ ์ต์ ์ TLB ๋ฏธ์ค๋ฅผ ์์ฑํ ์๋ ์๋ค. ๋๋คํ๊ฒ ๊ต์ฒดํ๋ ๊ฒฝ์ฐ ์ด๋ฐ ์ผ์ด (๊ฑฐ์) ์์ ๊ฒ์ด๋ค.
7. ์ค์ TLB

MIPS R4000๋ 32๋นํธ ์ฃผ์ ๊ณต๊ฐ์์ 4KB ํ์ด์ง๋ฅผ ์ง์ํ๋ค.
- ๊ฐ์ ํ์ด์ง ๋ฒํธ(VPN): 19๋นํธ๋ก ํ ๋น๋๋ฉฐ, ์ฃผ์ ๊ณต๊ฐ์ ์ ๋ฐ์ ์ฌ์ฉ์ ์ฃผ์ ๊ณต๊ฐ์ผ๋ก ํ ๋น๋๋ค.
- ๋ฌผ๋ฆฌ ํ๋ ์ ๋ฒํธ(PFN): 24๋นํธ๋ก ํ ๋น๋๋ฉฐ, ์ต๋ 64GB์ ๋ฉ๋ชจ๋ฆฌ(2^24 ๊ฐ์ 4KB ํ์ด์ง๋ค) ์ง์์ด ๊ฐ๋ฅํ๋ค.
TLB ํญ๋ชฉ์๋ ๋ํ ๋ช ๊ฐ์ง ์ค์ํ ๋นํธ๋ค์ด ํฌํจ๋์ด ์์ต๋๋ค:
- ์ ์ญ ๋นํธ(G): ์ด ๋นํธ๋ ํ๋ก์ธ์ค ๊ฐ์ ๊ณต์ ๋๋ ํ์ด์ง๋ค์ ์ํด ์ฌ์ฉ๋๋ค. ์ ์ญ ๋นํธ๊ฐ ์ค์ ๋๋ฉด ASID(Address Space Identifier)๋ ๋ฌด์๋ฉ๋๋ค.
- ASID ํ๋: 8๋นํธ๋ก, ์ด์์ฒด์ ๋ ์ด ํ๋๋ฅผ ํตํด ์ฃผ์ ๊ณต๊ฐ์ ๊ตฌ๋ถํ๋ค.
- ์ผ๊ด์ฑ ๋นํธ(C): ์ด ๋นํธ๋ ํ์ด์ง๊ฐ ํ๋์จ์ด์ ์ด๋ป๊ฒ ์บ์๋์ด ์๋์ง ํ๋ณํ๋ ๋ฐ ์ฌ์ฉ๋๋ค.
- ๋ํฐ ๋นํธ(D): ํ์ด์ง๊ฐ ๊ฐฑ์ ๋๋ฉด ์ธํ ๋๋ค.
- ์ ํจ ๋นํธ(V): ํญ๋ชฉ์ ์ ํจํ ๋ณํ ์ ๋ณด๊ฐ ์กด์ฌํ๋์ง ๋ํ๋ธ๋ค.
- ํ์ด์ง ๋ง์คํฌ ํ๋: ์ฌ๋ฌ ๊ฐ์ ํ์ด์ง ํฌ๊ธฐ๋ฅผ ์ง์ํ ๋ ์ฌ์ฉ๋๋ค. ๊ทธ๋ฆผ์๋ ๋ํ๋์์ง ์๋ค.