Previous chapter
Paging
ํ์ด์ง์ ๊ณ ์ ์ฌ์ด์ฆ๋ก ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋๋ ์ ์ ๋ณด ๋งคํ์ ๋ง์ ์์ ์๊ตฌํ๋ ํํ๋ก ์ฑ๋ฅ ์ ํ๋ฅผ ์ ๋ํ๋ค.
โข
๊ฐ ๊ฐ์ ํ์ด์ง์ ํด๋นํ๋ ๋ฌผ๋ฆฌ ํ๋ ์ ๋๋ฒ์ ํ์ด์ง ํ
์ด๋ธ ์ํธ๋ฆฌ๋ฅผ ์์ฑํญ ํ์ด์ง ํ
์ด๋ธ์ ์ฌ์ด์ฆ๊ฐ ์ด๋ง๋ฌด์ํ๊ธฐ ๋๋ฌธ์ด๋ค.
โข
๊ฐ์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋ฌผ๋ฆฌ ์ฃผ์๋ก ๋ณํํ ๋๋ง๋ค ์ด ํ์ด์ง ํ
์ด๋ธ์ ์ฐธ์กฐํด์ผ ํ๋๋ฐ, ํ์ด์ง ํ
์ด๋ธ์ ์ ๊ทผํ๊ธฐ ์ํ ๋ฉ๋ชจ๋ฆฌ ์ฝ๊ธฐ ์์
์ ์์ฒญ๋ ์ฑ๋ฅ ์ ํ๋ฅผ ์ ๋ฐํ๋ค.
Main QUEST : Accelerating Address-Translation
์ฃผ์ ๋ณํ์ ๋น ๋ฅด๊ฒ ํ๋ ๋ฐฉ๋ฒ์ ๋ฌด์์ด ์์๊น? ํ์ด์ง์์ ๋ฐ์ํ๋ ์ถ๊ฐ ๋ฉ๋ชจ๋ฆฌ ์ฐธ์กฐ๋ฅผ ํผํ๋ ๋ฐฉ๋ฒ์ ์ด๋ค๊ฒ ์์๊น? ์ด๋ค ํ๋์จ์ด๊ฐ ํ์ํ๋ฉฐ OS๊ฐ ๊ฐ์
๋ฅผ! ์ด๋ป๊ฒ ํด์ผํ ๊น?
OS์ ์คํ์๋๋ฅผ ๊ฐ์ ํ๋ ค๋ฉด ๋์์ด ํ์ํ๋ค.
๋๋ถ๋ถ ํ๋์จ์ด๋ก๋ถํฐ ๋์์ ๋ฐ๋๋ฐ ์ด๋ฒ์๋ ํ๋์จ์ด๊ฐ ํด๊ฒฐํด์ค ๊ฑฐ๋ค.
์ฃผ์ ๋ณํ์ ๋น ๋ฅด๊ฒ ํ๊ธฐ ์ํด ๋ณํ-์์ธ ๋ฒํผ(translation-lookaside buffer, TLB)๋ฅผ ๋์
ํ๋ค.
์์ฃผ ์ฐธ์กฐ๋๋ ํ์ด์งํ
์ด๋ธ ์ํธ๋ฆฌ๋ฅผ ์ ์ฅํ๋ ํ๋์จ์ด ์บ์์ด๋ฉฐ MMU(๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ ์ ๋, memory-management unit)์ ์ผ๋ถ์ด๋ค.
โข
์ฃผ์๋ณํ์ ๋จผ์ TLB์ ํด๋น ์ ๋ณด๊ฐ ์๋์ง ํ์ธํ๋ค.
โฆ
์๋ค๋ฉด ํ์ด์ง ํ
์ด๋ธ์ ํตํ์ง ์๊ณ ๋ณํ์ ๋น ๋ฅด๊ฒ ์ํํ๋ค.
Translation-Lookaside Buffer(TLB)
VPN = (VirtualAddress & VPN_MASK) >> SHIFT
(Success, TlbEntry) = TLB_Lookup(VPN)
if (Success == True) // TLB hit
if (CanAccess(TlbEntry.ProtectBits) == True)
offset = VirtualAddress & OFFSET_MASK
PhysAddr = (TlbEntry.PFN << SHIFT) | offset
Register = AccessMemory(PhysAddr)
else
RaiseException(PROTECTION_FAULT)
else // TLB miss
PTEAddr = PTBR + (VPN * sizeof(PTE))
PTE = AccessMemory(PTEAddr) //ํ์ด์งํ
์ด๋ธ์ ์ ๊ทผํ๊ธฐ์ํ ๋์ ์ค๋ฒํค๋
if (PTE.Valid == False)
RaiseException(SEGMENTATION_FAULT)
else if (CanAccess(PTE.ProtectBits) == False)
RaiseException(PROTECTION_FAULT)
else
TLB_Insert(VPN, PTE.PFN, PTE.ProtectBits)
RetryInstruction()
C
๋ณต์ฌ
VPN = (VirtualAddress & VPN_MASK) >> SHIFT
C
๋ณต์ฌ
๋จผ์ ๊ฐ์์ฃผ์๋ก๋ถํฐ VPN์ ์ถ์ถํ๋ค. ์ต์ํ ์ฝ๋์ง?
(Success, TlbEntry) = TLB_Lookup(VPN)
if (Success == True) // TLB hit
if (CanAccess(TlbEntry.ProtectBits) == True)
offset = VirtualAddress & OFFSET_MASK
PhysAddr = (TlbEntry.PFN << SHIFT) | offset
Register = AccessMemory(PhysAddr)
else
RaiseException(PROTECTION_FAULT)
C
๋ณต์ฌ
๊ทธ ๋ค์ VPN์ TLB์ ์ธ๋ฑ์ฑํ์ฌ ํด๋น PTE๊ฐ ์๋์ง ํ์ธํ๋ค.
์ฑ๊ณตํ ๊ฒฝ์ฐ (TLB์์ ํ์ํ์ฌ ๋งคํ๋๋ ๋์ด ์์๊ฒฝ์ฐ, ์ด๋ฅผ TLB HiT!์ด๋ผ๊ณ ํ๋ค.) TLB๊ฐ ๋ณํ ๊ฐ์ ๊ฐ๊ณ ์๋ค๋ ๊ฑธ ๋ปํ๋ค.
ํด๋น TLB์์ ํ์ด์ง ํ๋ ์ ๋ฒํธ๋ฅผ ์ถ์ถํ ์ ์๋ค.
else // TLB miss
PTEAddr = PTBR + (VPN * sizeof(PTE))
PTE = AccessMemory(PTEAddr) //ํ์ด์งํ
์ด๋ธ์ ์ ๊ทผํ๊ธฐ์ํ ๋์ ์ค๋ฒํค๋
if (PTE.Valid == False)
RaiseException(SEGMENTATION_FAULT)
else if (CanAccess(PTE.ProtectBits) == False)
RaiseException(PROTECTION_FAULT)
else
TLB_Insert(VPN, PTE.PFN, PTE.ProtectBits)
RetryInstruction()
C
๋ณต์ฌ
๋ฐ๋๋ก TLB ๋ฏธ์ค๊ฐ ์ผ์ด๋ ๊ฒฝ์ฐ ํด์ผํ ์ผ์ด ์ฐ๋๋ฏธ์ฒ๋ผ ์์ด๊ฒ ๋๋ค.
๊ธฐ๋ณธ์ ์ผ๋ก ์ฌ๋ฐ๋ฅธ PTE๋ฅผ ์ฐพ๊ธฐ ์ํด ๋ฉ๋ชจ๋ฆฌ์ ์๋ ํ์ด์ง ํ
์ด๋ธ๋ก ์ ๊ทผํด์ผํ๋ค.
๋ฉ๋ชจ๋ฆฌ์์ ์ฌ๋ฐ๋ฅธ PTE๋ฅผ ์ฐพ์๋ค๋ฉด, ์ด๋ฅผ TLB์ ๋ฃ์ด์ฃผ๋ ์์
์ ํ๋ค.
๋ชจ๋ ์์
์ด ๋๋ ํ, TLB๋ฅผ ๋ค์ ํ์ํ์ฌ HiT์ํจ๋ค!
Example
int a[10];
int sum =0;
for(int i=0; i<10; i++){
sum += a[i];
}
C
๋ณต์ฌ
๊ฐ์ ์ฃผ์ ๊ณต๊ฐ์ 8๋นํธ์ด๋ฉฐ, ํ์ด์ง ํฌ๊ธฐ๋ 16๋ฐ์ดํธ์ด๋ค. ๊ฐ์ ์ฃผ์๋ 4๋นํธ VPN๊ณผ 4๋นํธ ์คํ์
์ผ๋ก ๊ตฌ์ฑ๋๋ค.
๋ฐฐ์ด์ ์ฒซ ํญ๋ชฉ์ธ a[0]์ VPN : 06 offset : 4์ด๋ค.
for๋ฌธ์ ๋๋ฉด์ ๊ฐ ๋ฐฐ์ด์ ์์๋ฅผ ๋ชจ๋ ํ๋ฒ์ฉ ๋์๋ณด๋ ์์ ์ด๋ค.
๋งจ์ฒ์ a[0]์ ํ์ํ ๋ TLB๋ฅผ ๋ณด์. TLB๊ฐ ์์ ํ ์ด๊ธฐํ๋์ด์๋ค๊ณ ๊ฐ์ ํ์ ๋, TLB ๋ฏธ์ค๊ฐ ๋ฐ์ํ๋ค.
๋ฐ๋ผ์ ํ์ด์ง ํ
์ด๋ธ๋ก ์ก์ธ์คํ์ฌ, VPN06์ ์๋ PTE๋ฅผ TLB์ ์ฌ๋ ค๋๋๋ค.
a[1]์ VPN์ a[0]๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก 06์ด๋ฏ๋ก, TLB ํํธ๊ฐ ์ผ์ด๋๋ค. a[2]๋ ๋ง์ฐฌ๊ฐ์ง.
a[3]๋ ๋ค์ TLB ๋ฏธ์ค๊ฐ ๋๋ค. ๋ค์ VPN = 07๋ก ๊ฐฑ์ ํด์ฃผ๋ฉด a[6]๊น์ง๋ TLBํํธ๊ฐ ์ผ์ด๋๋ค.
TLB์ ๋ก๊ทธ๋ฅผ ์ดํด๋ณด์.
TLB log : miss HiT HiT miss HiT HiT HiT miss HiT HiT
C
๋ณต์ฌ
TLB ํํธ์จ์ด 70%๋ค. ๊ทธ๋ฅ ๋์ ์์น๋ ์๋์ง๋ง, 0์ ์๋๋๊น ๋คํ์ด๋ค.
์์ ์์ ์ ์ ์๋ ์ฌ์ค์ ํ์ด์ง์ ์ฌ์ด์ฆ๊ฐ TLB์ ํํธ์จ์ ๋๋ผ์ด ๊ด์ฌ๋ฅผ ํ๋ค๋ ์ ์ด๋ค.
ํ์ด์ง ํฌ๊ธฐ๊ฐ ๋๋ฐฐ๊ฐ ๋๋ฉด, TLB๋ฏธ์ค ํ์๋ ์๋์ ์ผ๋ก ์ค ๊ฒ์ด๋ค.
๋ํ, ๋ฃจํ ํ์๋ ๋ฐฐ์ด์ด ์ฌ์ฉ๋๋ ์ผ์ด ์๋ค๋ฉด ์ฑ๋ฅ์์ ์ข์ ์ํฅ์ ์ค ๊ฒ์ด๋ค.
Who handles the TLB miss?
Hardware Managing TLB
โข
CICS(x86)
โข
ํ๋์จ์ด๊ฐ ํ์ด์ง๊ฐ ๋ฉ๋ชจ๋ฆฌ ์ด๋์ ์๋์ง ํ์ธํด์ผ ํ๋ค.(via Page Table Base Register)
โข
RISC(MIPS)
Software Managing TLB
RISC ์ํคํ
์ฒ์์ ๋ง์ด ์ฌ์ฉ๋๋ ์ํํธ์จ์ด ๋งค๋์ง TLB๋ ํ๋์จ์ด ๋งค๋์ง TLB์ ๋ฌ๋ฆฌ ์ํํธ์จ์ด๋ก TLB ๋ฏธ์ค๋ฅผ ์ฒ๋ฆฌํฉ๋๋ค. ์ด ๊ฒฝ์ฐ, TLB miss๊ฐ ๋ฐ์ํ๋ฉด ์์ธ๋ฅผ ๋ฐ์์์ผ ์ฒ๋ฆฌํ ์ ์์ต๋๋ค.
MIPS ์ํคํ
์ฒ์์๋ ๋ค์๊ณผ ๊ฐ์ ์ฝ๋๋ก TLB ๋ฏธ์ค๋ฅผ ์ฒ๋ฆฌํฉ๋๋ค.
TLB miss๊ฐ ๋ฐ์ํ๋ฉด ์์ธ๋ฅผ ์ผ์ผํค๊ณ , ์ด ์์ธ๋ฅผ ์ฒ๋ฆฌํ๋ ์ํํธ์จ์ด ์ฝ๋์์ TLB miss ํธ๋ค๋ฌ๋ฅผ ํธ์ถํฉ๋๋ค. TLB miss ํธ๋ค๋ฌ๋ TLB miss๋ฅผ ์ฒ๋ฆฌํ๊ณ , ํ์ด์ง ํ
์ด๋ธ์์ ๋ฌผ๋ฆฌ์ ์ฃผ์๋ฅผ ์ป์ด์ TLB์ ์ฝ์
ํฉ๋๋ค.
โข
์ด์์ฒด์ ๋ CPU๊ฐ ๋ญ๊ฐ ๋๋ ๊ฐ์ ๋ด๊ฐ ์ํ๋ ํ์ด์ง ํ
์ด๋ธ์ ๊ตฌํํ ์ ์๋ค.
VPN = (VirtualAddress & VPN_MASK) >> SHIFT
(Success, TlbEntry) = TLB_Lookup(VPN)
if (Success == True) // TLB hit
if (CanAccess(TlbEntry.ProtectBits) == True)
offset = VirtualAddress & OFFSET_MASK
PhysAddr = (TlbEntry.PFN << SHIFT) | offset
Register = AccessMemory(PhysAddr)
else
RaiseException(PROTECTION_FAULT)
else // TLB miss
RaiseException(TLB_MISS)
C
๋ณต์ฌ
RISC๋ ์ํํธ์จ์ด ๊ด๋ฆฌ TLB๋ฅผ ์ฌ์ฉํ๋ค.
TLB์์ ์ฃผ์์ฐพ๊ธฐ์์ ์คํจํ๋ฉด ํ๋์จ์ด๋ ์์ธ ์๊ทธ๋์ ๋ฐ์์ํจ๋ค.
์์ธ ์๊ทธ๋์ ๋ฐ์ OS๋ ๋ช
๋ น์ด๋ฅผ ์ ์ ์ค๋จํ๊ณ , ์ ์ ๋ชจ๋์์ ์ปค๋๋ชจ๋๋ก ๋ชจ๋๋ฅผ ๋ฐ๊ฟ ์ปค๋ ์ฝ๋๋ฅผ ์ค๋นํ๋ค.
์ปค๋๋ชจ๋๋ก ๋ณ๊ฒฝ์ด ๋๋ฉด ํธ๋ฉ ํธ๋ค๋ฌ(trap handler)๋ฅผ ์คํํ๋ค.
TLB ๋ฏธ์ค์ ์ฒ๋ฆฌ๋ฅผ ๋ด๋นํ๋ OS ์ฝ๋์ด๋ค.
ํ์ด์ง ํ
์ด๋ธ์ ๊ฒ์ํ์ฌ ์ ๋ณด๋ฅผ ์ฐพ๊ณ TLB ์ ๊ทผ์ด ๊ฐ๋ฅํ ๋ ๋ฒจ์ ๋ช
๋ น์ด๋ฅผ ์ฌ์ฉํ์ฌ TLB๋ฅผ ๊ฐฑ์ ํ ํ์ ๋ฆฌํดํ๋ค.
ํธ๋ฉ ํธ๋ค๋ฌ์์ ๋ฆฌํด๋๋ฉด ํ๋์จ์ด๊ฐ ๋ช
๋ น์ด๋ฅผ ์ฌ์คํํ๋ ๋ฐฉ์์ด๋ค.
TLB๋ฏธ์ค๋ฅผ ์ฒ๋ฆฌํ๋ ํธ๋ฉ ํธ๋ค๋ฌ์ ์์คํ
์ฝ ํธ์ถ ์ ์ฌ์ฉ๋๋ ํธ๋ฉํธ๋ค๋ฌ์ ๊ฒฐ์ ์ ์ธ ์ฐจ์ด์ ์ ๋ฐ๋ณต์ ์ ๋ฌด๋ค.
โข
์์คํ
์ฝ์ ๊ฒฝ์ฐ, ํธ๋ฉ์์ ๋ฆฌํดํ ํ ๋ค์ ๋ช
๋ น์ด๋ฅผ ํธ์ถํ๋ค.
โข
๊ทธ๋ฌ๋ TLB์ ๊ฒฝ์ฐ ํด๋น ๋ช
๋ น์ด๋ฅผ ์ฌ์คํํด์ผ ํ๋ค.
์ฆ, OS๋ ํธ๋ฉ์ ์์ธ์ ๋ฐ๋ผ์ ํ์ฌ ๋ช
๋ น์ด์ PC๊ฐ ํน์ ๋ค์ ๋ช
๋ น์ด์ PC๊ฐ์ ์ ์ฅํด์ผํ๋ค.
๋ํ, TLB ๋ฏธ์ค ํธ๋ค๋ฌ๋ฅผ ์คํํ ๋, TLB ๋ฏธ์ค๊ฐ ๋ฌดํ๋ฐ๋ณต์ด ์ผ์ด๋์ง ์๋๋ก ์ฃผ์ํ์.
โข
TLB ๋ฏธ์ค๋ฅผ ํด๊ฒฐํ๋ ๊ณผ์ ์์ TLB ๋ฏธ์ค๊ฐ ๋ ์ผ์ด๋๋ ํํ ๋ฑ๋ฑโฆ
TLB Contents
โข
Fully associative : ํน์ ์ด๋๋ ์ค ์ฃผ์๊ฐ ์์นํ ์ ์๋ ๋ฃฐ์ด ์์ผ๋ฉฐ ์๋ฌด ๊ณณ์ ๋ค์ด๊ฐ ์ ์๋ค.
โฆ
๋ง์ด ์ฌ์ฉ๋๋ ๋๋ค๋ก ์ต๋ํ ์ฑ์ธ ์ ์๋ค.
โฆ
ํ๋์จ์ด์ ์ผ๋ก ์ด๋ค ๊ฐ์ ์ฐพ์ ๋ ๋ณ๋ ฌ๋ก ํ๊บผ๋ฒ์ ์ฐพ์ ์ ์๋ค.
โข
VPN | PFN | other bits
โฆ
์ ํจ๋นํธ : ์ํธ๋ฆฌ๊ฐ ์ ํจํ translation์ ๊ฐ์ง๋์ง
โฆ
Protection bits : ํ์ด์ง ํ
์ด๋ธ์ ์ด๋ป๊ฒ ํ์ด์ง๊ฐ ์ ์ฅ๋๋์ง?
โฆ
Address-space identifier, dirty bit, etc.
TLB valid bit โ Page Table valid bit
Context Switches
TLB๋ฅผ ์ฌ์ฉํ๋ฉด ํ๋ก์ธ์ค๊ฐ ๋ฌธ๋งฅ ๊ตํ์, ์๋ก์ด ๋ฌธ์ ๊ฐ ๋ฑ์ฅํ๋ค.
ํ๋ก์ธ์ค P1์ด ์คํ๋๊ณ ์๋ ์ํฉ์ด๋ค. TLB๋ P1์ ํ์ด์ง ํ
์ด๋ธ์ ๋ด์ฉ์ ๊ฐ๊ณ ์๋ค.
P1์ VPN์ 10์ผ๋, ๋ ๋ค๋ฅธ ํ๋ก์ธ์ค P2๋ก ์ปจํ
์คํธ ์ค์์นญ์ด ์ผ์ด๋ฌ๋ค.
๊ณต๊ต๋กญ๊ฒ๋ P2์ VPN๋ํ 10๋ฒ์ด๋ผ ์์ ๊ฐ์ ์ํฉ์ด ์ผ์ด๋๋ค.
ํ๋์ ๊ฐ์ ํ์ด์ง ๋๋ฒ VPN 10์ ๋ํด์ ๋์๋๋ ๋ฌผ๋ฆฌ ํ๋ ์ ๋๋ฒ๊ฐ 100, 170 ๋๊ฐ๊ฐ ๋๋ ๊ฒ์ด๋ค. ๋๊ตฐ๋ค๋ ์ด๋ ํญ๋ชฉ์ด ์ด๋ค ํ๋ก์ธ์ค์ ํ์ด์ง์ธ์ง ์ ๋ฐฉ๋ฒ์ด ์๋ค. ๋ฐ๋ผ์ TLB๊ฐ ์ ํํ๊ณ ํจ์จ์ ์ผ๋ก ๋ฉํฐ ํ๋ก์ธ์ค ๊ฐ์ ๊ฐ์ํ๋ฅผ ์ง์ํ๋ ค๋ฉด ์ถ๊ฐ ๊ธฐ๋ฅ์ด ํ์ํ๋ค.
๋ฌธ๋งฅ ๊ตํ์ ์คํ๋ ํ๋ก์ธ์ค์๊ฒ๋ ์ด์ ํ๋ก์ธ์ค๊ฐ ์ฌ์ฉํ TLB ์ ๋ณด๋ ์๋ฏธ๊ฐ ์๋ค.
ํ๋์จ์ด ๋๋ ์ด์์ฒด์ ๋ ์ด๋ฐ ๋ฌธ์ ๋ฅผ ์ด๋ป๊ฒ ํด๊ฒฐํ ๊น?
์ฌ๋ฌ๊ฐ์ง ํด๊ฒฐ๋ฐฉ๋ฒ์ด ์๋ค.
ํ ๋ฐฉ๋ฒ์ ์ปจํ
์คํธ ์ค์์น๋ฅผ ์งํํ ๋ ๊ธฐ์กด TLB ๋ด์ฉ์ ์ง์ฐ๋ ๊ฒ์ด๋ค.
ํ๋์จ์ด๋ก ๊ด๋ฆฌ๋๋ TLB๋ ํ์ด์ง ํ
์ด๋ธ ๋ฒ ์ด์ค ๋ ์ง์คํฐ๊ฐ ๋ณ๊ฒฝ๋ ๋ FLUSH๋ฅผ ์์ํ ์ ์๋ค.
์ด๋ flush๋ ๋ชจ๋ valid bit๋ฅผ 0์ผ๋ก ์ค์ ํ๋ ๋ฐฉ์์ผ๋ก ๋ณ๊ฒฝํ ์ ์๋ค.
์๋ก์ด ํ๋ก์ธ์ค๊ฐ ์คํ๋ ๋, ๋ฐ์ดํฐ์ ์ฝ๋ ํ์ด์ง์ ๋ํ ์ ๊ทผ์ผ๋ก ๋ฐ๋์ TLB ๋ฏธ์ค๊ฐ ์ผ์ด๋๊ธฐ ๋๋ฌธ์, ์ปจํ
์คํธ ์ค์์น๊ฐ ์์ฃผ ์ผ์ด๋๋ค๋ฉด ์ฑ๋ฅ์ ํ๋ฅผ ์ ๋ฐํ๋ค.
์ด๋ฅผ ํด๊ฒฐํ๋ ค๋ฉด, ์ปจํ
์คํธ ์ค์์น๊ฐ ์ผ์ด๋๋๋ผ๋ TLB์ ๋ด์ฉ์ ๊ทธ๋๋ก ์ ์งํ ์ ์์ผ๋ฉด์ ๋ค๋ฅธ ํ๋ก์ธ์ค์ ๊ตฌ๋ถ์ด ๊ฐ๋ฅํด์ผํ๋ค.
์ด๋ฅผ ์ํด ํ๋์จ์ด์ TLB์ ๋ด์ฉ์ ์ ์ฅํ๋ ๊ธฐ๋ฅ์ธ ์ฃผ์ ๊ณต๊ฐ ์๋ณ์(Address Space IDentifier, ASID) ํ๋๋ฅผ ๋์
ํ๋ค.
ASID๋ PID์ ์ ์ฌํ๋ค. ๋ค๋ง ASID๋ ์ข ๋ ์ ์ ๋นํธ๋ฅผ ๊ฐ์ง๊ณ ์๋ค.(ASID : 8bit, PID : 32bit)
์ ์์ ๋ ํ๋์ VPN์์ ๋๊ฐ์ PFN์ด ๋์ถ๋ ๋์ ๋ํ ์ด์ผ๊ธฐ๋ค.
๋ฐ๋๋ก ์ฌ๋ฌ๊ฐ์ VPN์ด ํ๋์ ๋ฌผ๋ฆฌ ๋ฉ๋ชจ๋ฆฌ์ ์๋ ดํ๋ฏ ๋งคํ๋๋ฉด ์ด๋จ๊น?
P! F! N!
์ด๋ฐ ๊ฒฝ์ฐ๋ ๋๊ฐ์ ํ๋ก์ธ์ค๊ฐ ํ๋์ ํ์ด์ง(์ฝ๋ ํ์ด์ง ๋ฑ๋ฑ)
ํ๋ก์ธ์ค 1์ด PFN 101์ ํ๋ก์ธ์ค 2์ ๊ณต์ ํ๋ ์ํฉ์ด๋ค. ์ฝ๋ํ์ด์ง๋ฅผ ๊ณต์ ํ๋ฉด ํ๋ก์ธ์ค๊ฐ ์ฌ์ฉํ๋ ๋ฌผ๋ฆฌ ํ์ด์ง์ ์๋ฅผ ์ค์ผ ์ ์๋ค.
Replacement Policy
์์ ๋งํ๋ฏ์ด TLB๋ ์ผ์ข
์ ์บ์๋ค. ๋ชจ๋ ์บ์๊ฐ ๊ทธ๋ฌํ๋ฏ, TLB์์๋ ์บ์๋ฅผ ์ด๋ป๊ฒ ๊ต์ฒดํ๋์ง ์ ์ฑ
์ ์ง๋ ๊ฒ์ด ์ฑ๋ฅ์ ๊ฒฐ์ ํ๋ ๋งค์ฐ ์ค์ํ ์ด์ ๋ค.
TLB์ ์ ํญ๋ชฉ์ ๋ฌ๊ธฐ ์ํด์๋ ๋ฐ๋์ TLB์ ๊ธฐ์กด ํญ๋ชฉ ์ค ํ๋๋ฅผ ๋ฒ๋ ค์ผ ํ๋ค. ์ง๋ฌธ์ ๋ค์๊ณผ ๊ฐ๋ค.
TLB์ ์๋ก์ด ํญ๋ชฉ์ ์ถ๊ฐํ ๋ ์ด๋ค ํญ๋ชฉ์ ๊ต์ฒดํด์ผ ์ฑ๋ฅ์ด ๊ฐ์ ๋ ๊น?
Least-Recently-Used : LRU
Least-Recently-Used : LRU
LRU๋ ๋ฉ๋ชจ๋ฆฌ ์ฐธ์กฐ ํจํด์์์ ์ง์ญ์ฑ์ ์ต๋ํ ํ์ฉํ ๋ฐฉ๋ฒ์ด๋ค.
์ฌ์ฉ๋์ง ๊ฐ์ฅ ์ค๋๋ ํญ๋ชฉ์ด ์์ผ๋ก ์ฌ์ฉ๋ ํ๋ฅ ๋ ์ ๋ค๋ ๊ฐ์ ์ ๊ทผ๊ฑฐํ๋ค.
Random
๊ต์ฒด ๋์์ด ๋ฌด์์๋ค.
์๋ชป๋ ๊ฒฐ์ ์ ๋ด๋ฆด ๊ฐ๋ฅ์ฑ์ด ์์ง๋ง, ๊ตฌํ์ด ๊ฐ๋จํ๊ณ ์์์น ๋ชปํ ์์ธ๋ฅผ ํผํ ์ ์๋ค.
Example
โข
32-bit 4KB page ์ด๋๋ ์ค ์คํ์ด์ค
โฆ
12๋นํธ ์คํ์
โฆ
20๋นํธ VPN
โข
PFN
โฆ
24๋นํธ โ 64GB ํผ์ง์ปฌ ๋ฉ๋ชจ๋ฆฌ ์ธ์
โข
Global bit(G)
โฆ
ํ๋ก์ธ์ค ์ฌ์ด์ ๊ธ๋ก๋ฒํ๊ฒ ๊ณต์ ๋๋ ํ์ด์ง โ ์ปค๋ ์์ญ
โข
ASID bits
โฆ
์ด๋๋ ์ค ์คํ์ด์ค๋ฅผ ๊ตฌ๋ถํ๊ธฐ ์ํ ๋นํธ
โฆ
PID๋ณด๋ค ๋นํธ์๊ฐ ์ ์
โช
ASID ๋๋ฒ๋ณด๋ค ๋ง์ ์์ ํ๋ก์ธ์ค๋ฅผ ์์ฑ๋ชปํ๊ฒ ํจ
โช
ASID๊ฐ ์ํฌํ
ํ์ง ์๋๊ฑฐ ์ฒ๋ผ ํ๋
โช
ASID๋ฅผ ๋ค์ด๋๋ฏนํ๊ฒ ํ ๋นํ๋ค.
โข
Coherence bits(C)
โข
Dirty bits(D)
โข
Valid bits(V)
โข
Next chapter






