두근두근이야기

MMU(memory management unit) 본문

IT/IT ::Linux

MMU(memory management unit)

골든 2013. 8. 24. 19:46

 MMU는 CPU가 메모리에 접근하는 것을 관리하는 하드웨어 부품이다. 가상메모리 주소를 실제 메모리 주소로 변화하며, 메모리 보호, 캐시관리, 버스 중재 등의 역할을 담당한다.

 CPU가 memory에 접근할 때마다 주소를 속인다. Physical Address와 Virtual Address의 Mapping 계산을 통해 Physical Address를 Virtual Address로 바꾸어 CPU에겐 마치 Physical Address인 것 마냥 속이게 되는 것이다.

 어떠한 이점이 있을까? MMU를 사용하게 되면

1. 모든 process마다 같은 주소를 사용할 수 있게 해준다. 

그렇게 되면 CPU는 프로세스 관리가 쉬워지고 구현 또한 쉬워질 것이다. 실제 physical address가 13번지, 15번지 29번지 일 때 MMU는 이를 모두 Virtual address로 1번지로 표현할 수 있다는 것이다.

2. 서로 떨어져 있는 데이터를 연속된 데이터로 표현할 수 있다.

 앞서 말했던 Physical Address가 13번지, 15번지 29번지인 경우 연속된 데이터처럼 1번지 2번지 3번지 처럼 표현할 수 있다는 것이다. 또는 전체 하나의 1번지로 표현할 수 있다.

(그림출처: 아래 사이트 참조)

Virtual Address는 32bit Address System(Reg가 32bit 이기에)이므로 2^32 = 4G를 나타낼 수 있다.

Page Table Entry(32bit)는 1MB씩 가르킬 수 있고, 4G를 가르키기 위해선

1MB x 1024 x 4 즉, 4096개가 필요하며

그 Table의 크기는 4096 x 32bit = 16KB가 된다.


기본 1MB를 가르키지만 더 작은 것을 나타내기 위해 옵션(하위 2비트)을 주어 

 1. 기본 1MB 섹션 엔트리(10)

 도메인, 캐시, 버퍼, 접근 권한의 속성을 포함

 2. 코어스 L2 페이지 테이블(01) 

 두번째 레벨 코어스 페이지 테이블의 베이스 주소를 가르키는 포인터, L1엔트리에 의해 표현되는 가상 메모리의 1MB섹션에 대한 도메인 정보 포함, 1KB배수의 주소로 할당

 3. 파인 L2 페이지 테이블(11) 

두번째 레벨 파인 페이지 테이블의 베이스 주소를 가르키는 포인터, 테이블 엔트리에 의해 표현되는 가상 메모리의 1MB 섹션에 대한 도메인 정보도 포함, 4KB배수의 주소로 할당

4. abort 익셉션을 발생시키는 페이지 폴트 엔트리(00)  

(메모리 페이지 장애를 발생시킴, 시도된 메모리 엑세스의 유형에 따라 prefetch 또는 data abort를 발생 시킴) 

 총 4가지 옵션을 통해 1MB이하의 Physical Address를 가르킬 수 있도록 하였다. 이를 통해 효율성을 더 높일 수 있고, 더 많은 양의 Physical Address를 포함 시킬 수 있게 하였다.


본 내용은 아래 사이트에서 참고 했으며 자세한 내용은 아래 사이트에서 공부하시길 바란다.

http://recipes.egloos.com/5232056



'IT > IT ::Linux' 카테고리의 다른 글

vimrc vim 설정  (0) 2013.08.24
우분투 gui로 부팅(text 모드시)  (2) 2013.08.24
no package 'xcb-xfixes' found  (0) 2013.08.21
makefile.in makefile.am  (0) 2013.08.21
커널분석  (0) 2013.08.20