티스토리 뷰

 

source: https://pages.cs.wisc.edu/~remzi/OSTEP/vm-tlbs.pdf

 

가상 메모리를 보조하기 위해서 페이징을 사용하면 오버헤드로 인해 성능이 나빠질 수 있다.

페이지와 같이 주소 공간을 작은 규모로 나누어서 관리하면 정보를 많이 연결mapping시켜야 한다. 왜냐하면 실제 정보는 물리적인 메모리에 저장되어 있고, 페이징은 논리적인 개념으로 프로그램이 만든 가상 주소를 연결하기 위해 부가적으로 메모리를 탐색해야 하기 때문이다. 명령어instruction를 가져오거나fetch 명시적으로 탑재load하거나 저장하기 전에 정보를 찾기 위해 메모리를 접근하면 너무 느려진다.

 

다시 말해서 중요한 지점은...

주소 변환Address Translation을 어떻게 빠르게 할 수 있는가? 그리고 어떻게 페이징을 하면서 외부 메모리를 참조하는 것을 피할 수 있는가? 하드웨어는 어떤 지원을 하는가? OS는 어떤 역할을 수행하는가?

 

운영체제는 빠르게 실행하기 위해서 하드웨어의 보조가 필요하다. 주소 변환Address Translation을 보조하는 하드웨어를 Translation-Lookaside Buffer라고 한다. TLB는 칩의 Memory Management Unit, MMU의 부분으로 가상 주소를 물리 주소로 바꾸는 데 사용되는 캐시이다. 

 

하드웨어는 각각의 가상 주소가 참조하는 지점을 TLB에 이미 변환되어 있는지 먼저 확인한다. 만약 TLB에 가상 주소의 변환이 존재 한다면 page table을 참조할 필요 없이 빨리 끝난다.   

 

// TLB Control Flow Algorithm
VPN = (VirtualAddress & VPN_MAST) >> 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
	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()

 

 

 

*누가 TLB를 관리 하는가?

 

하드웨어와 소프트웨어(운영체제)가 TLB를 관리한다. 

 

과거에는 하드웨어가 복잡한 명령어 집합instruction set을 가지고 있었다. (이러한 구조를 가진 컴퓨터를 Complex Instruction Set Computer, CISC라고 한다.) 이 시절에는 하드웨어가 TLB를 모두 관리하였다. 하드웨어는 메모리상의 정확히 어떤 위치에, 정확히 어떤 형태로, 페이지 테이블이 존재하고 있는지 page-table base register를 통해 관리했다. TLB miss가 발생하면 전체 페이지 테이블을 

 

 

 

 

 

 

*시간이 나면 뒷 부분도 번역할 것

'컴퓨터 > 운영체제' 카테고리의 다른 글

Context Switching  (0) 2022.01.03
논리 주소와 물리 주소  (0) 2021.12.31
Paging  (0) 2021.12.30
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함