티스토리 뷰

우선 MMU의 정의부터 보고 가면


메모리 관리 장치(Memory Management Unit, 줄여서 MMU)는 CPU가 메모리에 접근하는 것을 관리하는 컴퓨터 하드웨어 부품이다. 가상 메모리 주소를 실제 메모리 주소로 변환하며, 메모리 보호, 캐시 관리, 버스 중재 등의 역할을 담당하며 간단한 8비트 아키텍처에서는 뱅크 스위칭을 담당하기도 한다. 예전에는 MMU가 따로 분리된 하드웨어였지만 최근의 아키텍처에서는 프로세서와 같은 칩에 회로로 삽입된다.




현대의 컴퓨터들은 대부분 MMU와 TLB가 CPU안에 삽입되어있다.

출처 : https://www.quora.com/Is-an-MMU-and-a-TLB-on-a-single-chip-I-have-never-seen-or-noticed-them-on-my-motherboard-Is-an-MMU-an-ASIC-which-is-programmed-to-read-and-write-page-table-entry-arrays



MMU는 TLB라는 캐시를 저장하고 있다. 가상주소가 물리 주소로 변환되어야할 때, TLB에서 우선 검색된다.
해당 되는 주소가 있으면 (TLB hit) 물리주소가 리턴되고 메모리에 접근한다. 하지만, TLB에서 해당되는 주소가 없을 경우 (TLB miss) 페이지테이블에서 맵핑이 존재하는지 찾는다. 존재할 경우에 (page table hit) 이 값은 다시 TLB에 쓰이고 그 주소를 갖고 물리 주소로 변환 후, 메모리에 접근한다.
페이지 테이블에서도 찾지 못할 경우에는 disk에서 찾게 되고 그 값을 다시 page table에 쓰이고 TLB에 쓰이고 물리주소로 변환 후 메모리에 접근한다.
다시 정리하면, 가상 주소를 갖고 물리 주소에 접근할 때 TLB -> page table -> disk 순으로 접근한다고 생각하면 된다.
TLB는 processor 안에 있으며 page table에 경우 주로 메모리에 있으나 운영체제마다 다르다.


출처 : https://en.wikipedia.org/wiki/Page_table#Inverted_page_table


`

TLB가 실제로 어디에 있는지 아래 그림을 통해 확인할 수 있다.

translation lookaside buffer chip cpu에 대한 이미지 검색결과

출처 : http://slideplayer.com/slide/5823226/



TLB와 page table의 차이에 대해 논하자면,

스피드이다.

TLB는 최근 사용된 페이지를 저장하고 있는 cache이고 지역성(locality)과 시간성(temporality)의 원리에 따라 TLB에서 참조된 페이지들은 곧 다시 사용될 가능성이 높다. 반면, 페이지 테이블 그자체는 거대하기 때문에 필요한 페이지의 주소를 찾는데 더 오래걸린다.

또한, TLB에 사용되는 메모리는 associative memory로 비싼 대신에 더 빠르다.


정리하면, TLB는 page table의 속도향상을 위해 사용된다.



l1 cache mmu에 대한 이미지 검색결과






역 페이지 테이블 (Inverted page table)

기존의 페이지 테이블의 경우, 각 프로세스마다 본인의 페이지 테이블을 갖고 있다. 따라서, 많은 프로세스를 실행시 페이지테이블이 차지하는 메모리양이 늘어날 것이다. 이 문제를 해결하기 위한 방법 중 하나가 역페이지테이블이다. 

역 페이지 테이블은 전체 시스템에서 단 하나의 global 페이지 테이블을 갖는다.  따라서, 역 페이지 테이블에는 각 프로세스를 구분할 수 있는 pid 정보를 갖고 있다.역 페이지 테이블은 실제 메모리 적재된 프레임의 주소를 가상 주소로 매핑시킴으로써 메모리 크기를 줄인다. 즉, 논리적 주소에 관한 페이지 테이블이 아닌 물리적 주소에 관한 페이지 테이블이다. 

역 페이지 테이블의 단점은 주소 변환 요청이 들어올 경우, 해당 페이지 테이블 전체를 탐색해야한다는 단점이 있다.


역 페이지 테이블에서 엔트리의 갯수 = 물리적 주소 공간 / 페이지 크기

예를 들어 물리적 주소 공간이 1GB이고 페이지 크기가 2KB인 경우, 엔트리의 갯수는 2^30 / 2^11 = 2^19이다.


cpu에서 논리 주소를 내보내면 pid와 page number비트를 가지고 페이지 테이블을 탐색한다.

일치하는 엔트리를 발견시 그 엔트리의 주소 값(i)와 변위 비트(d)를 합쳐서 물리적 주소를 생성하고 메모리에 접근한다.

inverted page table에 대한 이미지 검색결과



참조 : https://www.quora.com/What-is-the-differences-between-a-page-table-and-an-inverted-page-table

참조 : http://www.8bitavenue.com/2016/11/page-table-vs-inverted-page-table/

참조 : http://box0830.tistory.com/99



이 그림도 역 페이지 테이블을 이해하는데 도움이 되었다.

출처 : https://web.eecs.umich.edu/~akamil/teaching/sp04/040104.pdf

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/04   »
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
글 보관함