안녕하세요.


오늘도 MMU에 대하여 공부해 보겠습니다.

TLB 동작


운영체제(리눅스)가 페이지 테이블 안에 있는 데이터를 변경한다면!?


TLB안에 캐시된 변환 데이터는 더 이상 유효하지 않을 수 있습니다.


무슨 말인지 다시 한번 생각해 볼까요?


페이지 테이블과 TLB 안의 데이터가 같은데, 운영체제가 페이지 테이블을 고쳤다.


그렇다면 TLB 안에 있는 데이터는 어떻게 하지!?


정도로 볼 수 있습니다 ^^


그렇다면 그 데이터는 어떻게 해야할까요??


쉽게 생각해서 그냥 TLB 안의 데이터를 지워야 한다는 생각이 듭니다!!


그래서. ARM 코어는 TLB에 있는 데이터를 무효화 하기 위해 CP15 명령어 세트를 가지고 있으며,


사용 가능한 명령어는 다음과 같이,


1. 모든 TLB를 무효화


2. 라인으로 TLB를 무효화


3. I TLB 무효화


4. 라인으로 I TLB 무효화


5. D TLB 무효화


6. 라인으로 D TLB 무효화


6 가지 가 있습니다. 


완전 어렵죠!!?


하지만 상황에 따라 필요한 TLB 동작이라고 생각 됩니다.


예전에 공부 했던 내용을 떠올려 보면,


프로세서가 페이지 테이블을 접근하기 전에 TLB를 접근한다. 


TLB는 케쉬 기능을 한다. 


는 말을 했었죠?


오늘 공부한 내용을 위 내용을 같이 생각해 본다면


프로세서가 요효하지 않은 TLB를 접근하여 처리가 되다면...


정상적인 동작을 하지 못할 것이라 생각이 됩니다 ^^


만약 MMU를 직접 조작하실 일이 있다면, 


이 점 유의하셔야 되겠죠!?


앞으로?

 

다음 글에도 MMU에 대하여 공부해 보겠습니다 ^^