📕Virtual memory
- Main memory를 보조 기억장치에 cache로 사용하는 기술이다.
- Programs는 main memory를 공유한다.
- 프로그램들은 자주 사용되는 코드와 데이터를 저장하는 개인 가상 메모리 주소 공간을 얻습니다.
- 가상 주소 공간은 프로그램의 주소 공간을 물리적 주소로 변환하여 다른 프로그램으로부터 보호됩니다.
- Page
- 가상 메모리 블록
- page fault : 가상 메모리 miss를 의미한다.
- 메모리에는 없고, virtual address에만 있는 경우
- Processor는 가상 주소를 생산한다.
- 가상 주소는 CPU와 OS에 의해 물리적 주소로 변환됩니다.
- 위의 과정을 address mapping 또는 address translation이라고 부릅니다.
📕Virtual Address
- 가상 주소는 relocation을 통해서 실행을 위한 프로그램 loading을 간편하게 해 준다.
- relocation는 주소가 메모리에 액세스 하는 데 사용되기 전에 프로그램에서 사용하는 가상 주소를 다른 물리적 주소로 매핑합니다.
- 이러한 relocation은 우리가 main memory에 있는 프로그램을 load 할 수 있게 한다.
- 가상 memory에서 주소는 virtual page number와 page offset으로 나뉜다.
- Virtual address : Virtual page number + Page offset
- Physical address : Physical page number + Page offset
- 가상 주소를 물리 주소로 바꾼 다는 것은 Virtual page number -> Physical page number 변환하는 것.
- page offset의 bit 수는 page size를 결정한다. 아래 사진은 12bit이기에 page size : 2^12인 4KB이다.
📕Page table
- page table은 해당 physical page number를 검색하기 위해 virtual page number로 인덱싱 됩니다.
- page table은 페이지 변환을 해줌. virtual -> physical
- page table register은 메모리에 있는 page table에 위치를 나타내는 데 사용된다.
📗Page table Structure
- 32-bit virtual (4GB), 30bit physical (1GB) , and 4KB page Size
- page table에는 valid bit가 사용된다.
- valid bit가 0인 경우 page는 memory에 존재하지 않다는 뜻이고 page fault를 발생
- valid bit가 1인 경우 page는 memory에 존재하고, page table은 physical page number를 포함한다.
📗Page fault
- valid bit가 0인 경우 page fault가 발생한다.
- 발생할 경우 physical memory가 아닌 가상 메모리에서 찾아야 한다.
📗Page Fault Penalty
- disk로의 page fault를 처리하는 데는 많은 clock cycle이 필요하다.
- page fault는 Os codes에 의해 다뤄진다.
- 따라서 우리는 page fault를 최소화할 필요성이 있습니다.
- fully associative placement, large enough page size, smart replacement algorithms 등을 이용
📕Page Replacement
- Page fault가 일어났을 때, 모든 페이지가 사용 중이라면 [빈 페이지가 없다면] page를 교체해줘야 한다.
- 그 교체 알고리즘은 여러 가지가 있지만 LRU알고리즘을 사용한다.
- LRU : Least recently used
- 즉 가장 오랫동안 사용되지 않은 page를 선정해서 교체해주는 방식을 택한다.
- 그러면 그 오랫동안 사용되지 않은 page는 어떠한 방식으로 찾는 걸까?
- reference bit를 이용한다.
- reference는 주기적 시간을 이용해서 그 시간 동안 page를 reference 했다면 1을, 하지 않았다면 0을 가진다.
- OS에 의해 주기적으로 0으로 초기화된다.
- 만약 reference bit가 0이라면 오래된 page라고 판단해서 교체된다.
- reference bit를 이용한다.
- 그 교체 알고리즘은 여러 가지가 있지만 LRU알고리즘을 사용한다.
📕Address Translation
📗Page hit
- page가 memory에 있는 경우 page hit가 발생한다.
- Processor는 Virtual Address를 MMU로 보낸다.
- MMU는 Page Table entry Address를 memory로 보낸다.
- MMU는 메모리에 있는 page table에 PTE를 받는다.
- MME는 Physical Address를 memory로 보낸다.
- memory는 processor로 data를 보낸다.
📗Page fault
- page가 memory에 없는 경우 발생
- Processor는 virtual address를 mmu에 보낸다.
- mmu는 PTE address를 memory에 보내고 memory에 있는 page table로부터 PTE를 받는다.
- 만약 valid bit가 0이라면 page fault가 발생
- valid bit가 0이라는 뜻은 page가 memory에 존재하지 않다는 뜻
- page fault가 발생했다면 handler routine이 실행된다.
- handler는 희생될 페이지를 식별하고, 만약 그 페이지가 dirty bit를 확인
- 0이라면 내용을 저장할 필요가 없음
- 1이라면 내용을 디스크에 복사해둬야 함.
- handler는 새로운 페이지를 디스크로부터 받고, cache에 작성한 뒤, PTE를 수정한다.
- handler는 원래의 과정으로 돌아가고, 재시작한다.
📕TLB
- translation-lookaside buffer (TLB)
- 주소 변환을 빠르게 해주는 역할
- TLB miss and if page is memory
- memory에 잇는 PTE를 load 해서 TLB에 전달.
- TLB miss and if page is not in memory
- 디스크의 데이터를 물리적 메모리에 저장하고 page table이 이 주소를 가리키도록 한다.
'Computer Science > Computer Architecture' 카테고리의 다른 글
[Computer Architecture] - Associative Cache (1) | 2022.11.28 |
---|---|
[Computer Architecture]- Cache(1) (2) | 2022.11.26 |
[Computer Architecture] - Exploiting Memory Hiearchy(1) (0) | 2022.11.25 |
[Computer Architecture] - processor(3)-[pipeline, hazard] (0) | 2022.11.19 |
[Computer Architecture] - processor (2) (0) | 2022.11.12 |