저번주에 TTBR, TTBCR, discriptor등 용어가 너무 헤깔려서 정신이 하나도 없더라구요.
암 레퍼런스 매뉴얼에 있는 내용을 정리하면서 저의 추측도 좀 더했어요.
워낙 꽐라영어라.. 조심히 보시고 이상한 거 있으면 말씀해 주세요^^;;
B3.5 Short-descriptor translation table format 이란?
32bit의 크기로 가상 메모리를 여러 사이즈로 나누어 관리할 수 있도록 여러속성을 설정할 수 있게 해줍니다. 64bit크기인 long-descriptor보다 짧아서 short-descriptor라 하나 봅니다. 아래의 메모리 섹션 또는 페이지를 지원합니다.
Supersections Consist of 16MB blocks of memory
Sections Consist of 1MB blocks of memory
Large pages Consist of 64KB blocks of memory.
Small pages Consist of 4KB blocks of memory.
short-descriptor tralnslation table 은 두개 레벨의 변환테이블을 가질 수 있습니다.
First-level table
first-level 디스크립터를 가지고 있으면 이 디스크립터는 가상주소의 베이스 어드레스와 아래와 같은 속성을 가집니다.
• Section과 Supersection
• second-level page table을 가리키는 포인터.
• fist-level 디스크립터의 구조
second-level table
second-level 디스크립터를 가지고 있으며 이 디스크립터는 가상주소의 베이스어드레스와 아래와 같은 속성을 가집니다. A second-level table은 1KByte의 메모리가 필요합니다.
• Large page이나 a Small page
• second-level 디스크립터의 구조
Short-descriptor를 이용한 주소변환(자세한 방법은 B3.5.5를 참조한다.)
B4.1.154 TTBR(Translation Table Base Register)이란?
위 그림 처럼 TTBR은 First-level table의 base Address를 가지고 있습니다. MMU가 가상메모리를 변환할때 TTBR을 통해서 PageTable을 접근하여 계산을 하는 거죠. 32bit 크기의 TTBR0, TTBR1 두개가 있는데 각 레지스터가 first-leve table을 나누어 관리하거나 두개 합쳐서 64bit로 사용할 수도있습니다.
TTBR의 설정범위와 용도(B3.3.1)
TTBR0 :
• 가상메모리 변환시 first-level 변환 테이블 전체를 나타내거나 둘로 나누어 관리할때 아래 부분을 가리키도록 설정할 수있습니다.
• 프로세스를 위한 메모리를 위해 사용. 각 프로세스는 구별된 first-level 변환테이블을 가지며 컨텍스트 스위칭시에 업데이트 됩니다.
테이블의 사이즈가 변한다면 TTBR의 경계를 결정하는 TTBCR도 업데이트 됩니다.
TTBR1:
• 변환테이블을 둘로 나누어 관리할때 상위 부분을 가리키도록 설정할 수 있습니다.
• OS와 I/O address에 사용되며 컨텍스트 스위칭시에 변경되지 않습니다.
B3.5.4 TTBCR을 이용한 TTBR 영역 설정
Short-descriptor 변환 테이블 포맷을 사용한다면, 변환 테이블의 베이스 어드레스를 TTBR0, TTBR1 둘 중 어떤 레지스터가 포함할지 결정하는 최상위 비트의 개수를 TTBCR.N이 결정합니다.
• 만약 N이 0이면 TTBR0만 이용되고, 두번째 변환테이블은 비활성화 된다.
• 만약 N이 아니면, 가상주소의 bits[31:32-N]가 0일 경우 TTBR0이 사용되고 아니면 TTBR1이 사용된다.
• TTBCR.N에 따른 테이블의 베이스 어드레스 :
TTBCR.N 이 0이 아닌경우, TTBR1이 가리키는 변환 테이블의 크기는 항상 16KB이다.
아래 그름은 TTBCR.N의 값에 따라서 TTBR0또는 TTBR1이 표현하는 가상주소의 범위가 어떻게 바뀌는지 보여준다.
댓글 9
-
허욱
2013.07.17 12:40
-
서한배
2013.07.17 23:26
다시 보니 어느정도 이해가 되네요.
이렇게 이해가 안되는 부분이 나오면 첨엔 답답하다가도 답을 찾아가는 과정이 은근 재밌죠.^^
정리하시느라 수고하셨습니다. 감사합니다.
-
신C
2013.07.18 00:21
서한배님과 이야기 나누면서 많이 배웠습니다. 저도 감사합니다.^^
-
조성진
2013.07.17 23:28
얼레... 이글을 지금봤네요 ㅎㅎ
정리 감사합니다~~~~
이번주 세미나 시간에 간략하게 설명 부탁 드려도 될까요? ㅎ
-
조성진
2013.07.18 18:55
이제 2시 시작인가요 ㅎㅎ 이해 안되었던 사람들은 미리 모여서 복습하고 시작하는군요..
마치 초등학교때 나머지 공부가 생각나네요. ㅎㅎ
-
제이
2013.07.18 16:02
우리 2시에 시작하는거 아녔어요? ㅋㅋ
-
조성진
2013.07.18 13:28
시간이 정말 빨리 가긴 하네요 ㅠㅠ
스터디 시간에는 리뷰하면 진도가 너무 느려지니, 스터디 이전시간에 모여서 복습할까요? ㅎ
-
신C
2013.07.18 00:25
제가 이해한건 이게 다 인데 원하신다면 리뷰하는 정도로 해볼께요.
소스도 복습도 해야하는데 시간이 넘 빨리가네요.
-
제이
2013.07.18 16:03
내용이 많네요 ㅋㅋ 댓글 놀이 먼저 ㅋ
.
항상 가려운 부분을 긁어주시는? 정리해주시는 신기화님 감사드려요.
지금은 업무중이라 집에가서 봐야겠네요. ㅋ
토욜일에 뵈요 :)