본문 바로가기
🚗 Major Study (Bachelor)/🟩 Computer Architecture

컴퓨터 구조 CH5_Virtual Memory

by UKHYUN22 2021. 12. 6.
728x90

TLB를 이해하기 위해서 Virtual Memory에 대한 설명

 


Introduction
virtual Memory는 main memory와 second memory 사이에 존재한다.
실제로 존재하지는 않고 논리적으로 존재한다.
Virtual Memory는 Hierachy 의 일부이기 때문에 performance와 관계가 있지만 사실 Protection과 관련이 깊다.

 

 


Recall: Memory Hierachy
DRAM의 speed와 Disk의 크기를 갖고자 할때  Process가 무엇인지.. CPU가 있으면 하나의 일만을 처리하는 것이 아니다.
그런 Process들은 CPU도 Share 해야하고 Memory도 Share 해야하는데 메모리가 겹치는 부분이 발생한다. 하나의 Process가 다른 Process를 건드리지 않도록 조정해줘야 한다.
Program들이 있다면 Memory를 Share 해야 하는데 Virtual Memory를 스스로 갖고 있는 것 처럼 Virtual 상의 메모리를 줘야한다. Virtual Memory의 주소만 보기 때문에 Protection에 유리하다.

 


Virtual Memory
DRAM과 secondary 메모리 사이에 존재한다.
요즘은 Hierachy보다 Protection에 더욱 중요한 역할을 하고 있다.
Virtual memory address와 Physical address는 구별된다.

 


Illusion of having more physical memory
32bit 짜리 머신이면 4GB 2의 32승 인데 Physical 메모리는 한 참 작은 메모리가 있어야 하는데 이 차이를 어떻게 할 것인가. Virtual Memory가 4GB 있다고 생각을 하고 Physical 을 잘 설정해주면 잘 돌아간다는 것이다.
각각의 job address space가 physical memory보다 크다. process가 여러 개인 시스템에서는 메모리를 관리할 수 있게 해준다. 마치 각각의 Process는 자신의 CPU와 Memory를 사용하는 듯한 착각을 일으킨다.

 


실제로 Physical 메모리가 존재하는데 VIrtual Memory의 사용하는 일부이다. 
실제로 Physical 메모리보다 큰 사이즈를 요구하더라도 Virtual 메모리 사이즈만 된다면
일부는 Ram에 일부는 Hard Disk에 두고 사용한다. 

 


Address Translation
프로그램은 마치 Virtual 메모리가 잇다고 생각하고 Address를 만든다.
Address Translation 이라는 것은 Virtual Address를 Physical address로 Translation
하는 것이 필요하다.
이렇게 Mapping 하는 것은 HardWare가 수행하게 된다.

 

 


Virtual address가 있으면 Translation을 통해서 바꾸게 되는데 Physical 메모리에 있다면 괜찮은데 miss인 경우 (miss hit 은 Cache에서 사용하는 용어..)
Cache에서는 하나하나를 BLock이라고 하지만 Virtual Memory는 page라고 부른다,. Page가 Block 보다 훨씬 크다.
다시 말하자면 miss fault가 나면 Secondary 메모리로부터 다시 가져오고 나오고의 작업이 진행된다.

 


Page
몇 번 page이고 그 page로부터 얼마나 떨어져 잇는지는 Page offset에 저장한다.

 


Page fault
Virtual memory에서 miss가 일어난 것.
hardware 보다 software에서 처리를 한다.

 


Page Table
Virtual page를 따라서 가면 만약 1인 경우 실제로 어느 위치에 있다고 얘기해주는 것이 Translation이다. 즉 이 Page Table을 통해서 Physical 에 잇는지 Disk에 잇는지를 파악할 수 있다. Physical Table을 Main memory 안에 두게 된다. 

 


Table register를 통해서 Table의 어디에 위치하는지 얘기를 해주고 Virtual page로 찾아가고 Valid가 1이면 Physical한 main Memory가 있는 것이고 Page offset을 통해서 정확히 Main memroy의 어디에 있는지 찾을 수 있다.

 


Page Table은 Main Memory에 있다.
page table에 일일이 접근하려며 시간이 걸리게 된다. 마찬가지로 Page Table도 Page Table의 일부를 Cache에 갖다 놓는다. 이것을 TLB라고 부른다 Translation Lookaside Buffer Virtual Address를 Physical Address로 바꾸기 위해서 page Table이 필요하고 접근하는데 시간이 오래걸리므로 일부를 Cache에 갖다 놓는다(포인트**). page Table역시 locality를 가지고 있다.

 


TLB
TLB에 있나 확인해서 있으면 가져오고 만약 없어서 miss가 나면 Main에서 Table을 가져온다.

 


Some Issues
프로세스 스피드는 빨리 증가하고 DRAM의 성장 속도는 느리게 증가하는데 그 격차를 줄이느 것이 과제이다.
DRAM에서 데이터를 많이 읽어오도록 해야하고 Locality를 높이도록 해야한다.
Prefetching / 없을 때 가져오는 것 보다 접근을 안했지만 접근을 할 것 같은 것을 Main에서 미리 가져다 놓는 작업을 말한다.