ARM 의 TLB 운용에 대해서 읽어본것들을 정리 하였습니다.
내용은 arm 사이트의 있는 내용을 조악하게 번역한 수준입니다.
도움이 될것 같아서 사이트에 올립니다.
각 키워드 중심으로 보시면 됩니다.
set-associative region
lockdown region
MicroTLB
MainTLB
page walk
TLB miss
내용은 ARM coretex A9 기준입니다.
< 내용 정리 >
TLB 에 들어있는 매칭 table 들을 TLB entry 라고 한다.
ARM Main TLB 는 set-associative region 과 lockdown region 이 있다.
- Invalidate TLB operations 는 set-associative region 에 이는 TLB entry 들만 무효화 한다.
- invalidate TLB Single Entry operations" 는 어느 region 에 있던지 상관없이 표적된 virtual address 를 찾아서 무효화 시킨다.
TLB 는 각각 10개의 entry 를 가진 data MicroTLB, instruction Micro TLB 와 MainTLB 로 나뉜다.
MicroTLB 에서 먼저 찾고, miss 가 되면 MainTLB 에서 찾는다. 이것도 miss 나면 TLB miss 라고 부르고, page table 에서 찾는다.(page walk)
< tlb page walk >
http://en.wikipedia.org/wiki/Page_table
MMU는 시스템 page table 동작으로부터의 최근 사용된 mapping 들을 캐쉬에 저장한다.
이것은 TLB 라 부른다. TLB 는 associative(조합된) 캐쉬이다. virtual address 가 phusical address 로 전활될 필요가 있을때 TLB 를 우선적으로 찾아본다.
찾았을때 (TLB hit), physical address 를 리턴하고 메모리를 연속적으로 access 할 수 있다.
그러나 match 가 TLB 에 없을때 (TLB miss), handler 는 전통적으로 mapping 이 존제하는지 알아보기 위해 page table 안에 address mapping 을 찾는다. 이를 page walk 라고 한다.
만약 하나를 찾으면, 그것은 TLB 에 써진다. 그리고 명령을 재시작한다.
그 다음의 전환에서는 TLB hit 를 찾을 것이고 메모리 access 가 일어난다.
http://infocenter.arm.com/help/topic/com.arm.doc.ddi0211k/Chdbjegc.html
< MicroTLB ? >
http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0211k/Chdhhhei.html
page table information 을 위한 첫번째 레벨 캐싱은 10개의 entry들로 이루어진 작은 MicroTLB 이다.
data 와 instruction 각각 사용한다. (해석 : data 용 MicroTLB 와 instruction MicroTLB 가 있다.)
< mainTLB ? >
http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0211k/Chdjafig.html
mainTLB : MicroTLB 로부터 miss 된 cache 를 catch 하는 TLB 구조안의 두번째 layer.
lockable(잠글수 있는) translation entry들을 제공한다.
instruction 과 data MicroTLB 로부터의 TLB miss 는 통합된(instruction 과 data가) Main TLB 에서 처리된다. Main TLB 는 MicroTLB miss 로만 접근가능하다.
MainTLB 의 lockable region 의 entry들은 single entry 단위로 lock 하는것이 가능하다.(c10 lockdown register)
Main TLB 의 기능
- Main TLB 는 두 element 들로 이루어져 있다.
= lock 이 가능한 8가지 element들의 fully-associative array(완전히 연관된 배열)
= cache 안에서 사용되는 것과 유사한 적은 연관성의 Tag RAM 과 Data RAM structure
- low-associativity region 은 두개의 각각 64 entry의 structure 이다. RAM 사용에 따라 다르다.
= 4개의 32-bit wide RAM
= 2개의 64-bit wide RAM
= 한개의 128-bit wide RAM
< lockdown TLB? >
3.3.22. c10, TLB Lockdown Register
The purpose of the TLB Lockdown Register is to control where hardware page table walks place the TLB entry in either:
the set associative region of the TLB.
the lockdown region of the TLB, and if in the lockdown region, which entry to write.
TLB lockdown register 의 목적은 h/w page table walks에 TLB entry 를 위치시키는 컨트롤을 하기 위함이다. 다음과 같은 경우에..
- TLB의 associative region(?) 을 set
- TLB region 의 lockdown, 그리고 lockdown region 에서 entry 를 write 할때,
TLB 구조체의 묘사를 보면, 락다운 리전은 8 entries 들을 담고 있다. 0~7 까지 숫자가 붙어있다.
TLB 락다운 레지스터는
- CP15 c10 안에 있다.
- 32bit r/w 레지스터
- privileged mode 에서만 접근 가능하다.
Figure 3.48. TLB Lockdown Register format
[28:26] Victim
연속되는 h/w page table walk 가 TLB entry 에 위치한 lockdown 리전의 특별한 entry.
TLB entry 를 위한 락다운 리전에 정의된 victim 값. 0-7 사이의 값이 허용된다. reset value 0
[0] p
보호 bit.
0 = TLB의 the set associative region 안에 TLB entry 를 위치 시킴 (reset value)
1 = victim bit 에 의해 정의된 TLB 의 lockdown rgion 안에 TLB entry 를 위치시킴
subsequent hardware page table walks(TLB miss 후 page table 을 찾는 동작)는 TLB entry 를 TLB 의 lockdown region 혹은 associative region 어느쪽에 둘지 결정한다.
lockdown region 안의 TLB entry들은 보호된다.
- "Invalidate TLB operations" : invalidate(무효화) TLB 동작은 단지 TLB 의 보존되지 않은 entry들만 무효화 시킨다. 이것은 그것들이 단지 the set-associative region 의 entry들 만을 무효화 시킴을 의미한다. (해석 : lockdown region 의 TLB entry 는 무효화 시키지 않는다는 의미인것 같다.)
- "invalidate TLB Single Entry operations" 는 Rd 에 주어진 virtual address 에 일치하는 TLB entry 는 lockdown region 이나 set-associative region 안에 있는지 신경쓰지 않고 무효화 시킨다.
'Programming > ARM' 카테고리의 다른 글
PMU - Performance Monitoring Unit (0) | 2018.05.14 |
---|---|
irq 용어 (0) | 2018.04.03 |
눈으로 보는 ARM - ASM 해석 (0) | 2010.09.22 |
compile 된 binary 가 thumb / thumb-2 인지 check 하기 (2) | 2010.07.15 |
Cache - Flush, clean, Invalidate (0) | 2010.06.24 |