C TTBCR과 TTBR 정리

신C 2013.07.17 01:46 조회 수 : 9442

저번주에 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 디스크립터의 구조

76cOMWD87LoJrwHFzqWb_u1gHK4eP4T4M4izH7gS

second-level table

second-level 디스크립터를 가지고 있으며 이 디스크립터는 가상주소의 베이스어드레스와  아래와 같은 속성을 가집니다. A second-level table은 1KByte의 메모리가 필요합니다.



• Large page이나  a Small page

• second-level 디스크립터의 구조

Ayx2oOXHWGFz4SrkrwPmVFyaftxxVZHZoBIHr0gp


Short-descriptor를 이용한 주소변환(자세한 방법은 B3.5.5를 참조한다.)

n5nDx6T65nj6G1g1uW35stli-2wXV-7yyGC-QLsK


B4.1.154 TTBR(Translation Table Base Register)이란?

위 그림 처럼 TTBR은 First-level table의 base Address를 가지고 있습니다. MMU가 가상메모리를 변환할때 TTBR을 통해서 PageTable을 접근하여 계산을 하는 거죠. 32bit 크기의 TTBR0, TTBR1 두개가 있는데 각 레지스터가 first-leve table을 나누어 관리하거나 두개 합쳐서 64bit로 사용할 수도있습니다. vvl5bglV5Gv8z9ttCoyL7MRp5Hl-VfvfC_6AV3hs

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에 따른 테이블의 베이스 어드레스 :


ul6HWZuYJ5Bilyx8_SW9dhh3Q8_Zq0SVu_wk-qMZ

TTBCR.N 이 0이 아닌경우, TTBR1이 가리키는 변환 테이블의 크기는 항상 16KB이다.



아래 그름은 TTBCR.N의 값에 따라서 TTBR0또는 TTBR1이 표현하는 가상주소의 범위가 어떻게 바뀌는지 보여준다.VF4OCnbB9PpieOYhExynGzoDJIgKcx1sAlpGjJC9


번호 제목 글쓴이 날짜 조회 수
공지 [공지] 커널 스터디 관련 Q&A 게시판 입니다. [5] woos 2016.04.09 2194
76 이클립스에서 ARM Linux 개발 툴 사용하기(DS-5) [1] file 와사 2013.08.15 12870
» TTBCR과 TTBR 정리 [9] 신C 2013.07.17 9442
74 GNU global 추천합니다. (설치방법 추가) [8] 리누즈박 2013.07.02 6544
73 github에 ssh key 등록하기 [2] 리누즈박 2013.06.30 5723
72 [커널 14차C] 1주차(20170513) 스터디 로그 - 스터디 장소 관련 내용 추가 [3] 목태양 2017.05.14 5592
71 Exynos5410 task switching [7] tp 2013.08.07 5388
70 리눅스 커널 강의 추천 [8] 민준홍 2016.05.01 3960
69 ARM Tech Symposium 2013 후기 [5] tp 2013.11.20 3793
68 Booting ARM Linux (한글) [6] 리누즈박 2013.08.09 3716
67 EXYNOS5440 Config 파일 만들기. [5] 신C 2013.06.30 3472
66 zImage 수행순서 [10] file 조성진 2013.07.01 3348
65 vmlinux의 .got 섹션 [4] 쿨쿨 2013.07.29 2664
64 arm tech symposium 2013 seoul, 19 Nov. (화) [1] tp 2013.11.09 2459
63 head.S에서 page table 초기화 후 2M영역에 다시 설정하는 이유? [5] 신C 2013.07.07 2388
62 오늘 말하고 싶었던 것이 있었는데.. 타이밍을 놓쳤네요. [9] 신C 2013.06.30 2118
61 [커널 14차C] 2주차(20170520) 스터디 로그 [6] 목태양 2017.05.21 1988
60 C조 의견 정리, 오픈채팅방 개설 및 30일 오프라인모임 참석자 조사 [51] 뒷북 2016.04.26 1025
59 [커널 14차C] 3주차(20170527) 스터디 로그 [7] 목태양 2017.05.28 780
58 C조 교재 및 장소 선정 의견접수 [40] 뒷북 2016.04.24 605
57 C조 5월7일 오프라인모임 참석자 조사 [39] file 뒷북 2016.04.30 592
XE Login