Week 10: Efficient Address Translation

Week 10: Efficient Address Translation

TLB: 몰랐던 사실
Linux는 자신만의 page table형식이 있다. 그리고 Intel, MIPS, SPARC 등 다른 종류의 CPU들은 각자만의 TLB entry format이 있다. 따라서 Linux는 2개의 Page table을 maintain해야 한다. (자신의 것과 TLB가 볼 것). SW-based TLB는 TLB가 스스로 TLB entry를 업데이트 하지 않는다. TLB miss가 나면 OS가 trap에 걸려서 (Interrupt아닌가??) 해당 page의 TLB entry format version을 만들어 업데이트 해준다.

 

Super page: 경우에 따라서 memory가 sequential하게 align되어 있는 경우 걔들을 하나로 묶어 page size를 늘려 TLB entry를 아낀다.

 

Hardware tagged TLB: Context switch가 일어나면 어떤 page entry를 TLB에서 버려야 할 까? TLB entry format에 pid를 넣어서 참고한다. (Eviction일 때 참고한다는 것인지, 아니면 context switch가 일어나자 마자 모두 버려버린다는 것인지 모르겠다.)

 

TLB shootdown: Multi-core env.에서 각 CPU들의 TLB를 synchronize하기 위해서 OS가 tlb entry의 pulge를 요청하는것. (근데 전체 entry를 다 비우는 건지 선택적으로 비우는 것인진 모르겠다.) 이것도 performance degradation에 지대한 영향을 미친다고 한다.

 

TLB도 cache처럼 hierarchical하게 있다.

 

Cache에 virtual address와 value만 있는게 아니라 PID, Physical address도 있어서 거기 값이 쓰이면 OS가 (이걸 OS가 한다고? H/W가 아니라?)같은 위치를 가리키는 다른 Virtual address들을 찾아서 모두 업데이트함.

 

Hyper threading: Logical core끼리 CPU는 share하는게 맞는데 cache나 TLB같은건 어떻게 되지??

Leave a Reply