출처: https://3months.tistory.com/307 [Deep Play]

3-2/운영체제

Translation Lookaside Buffer

코딩하는 랄뚜기 2021. 10. 21. 18:30

페이지 테이블을 이용하게 되면 메모리를 flexble하게 사용할 수 있으므로 메모리 효율이 올라간다.

하지만 logical address를 physical address로 변환시키기 위해서 page table에 접근하고 page table에 있는 physical address를 확인 후에 다시 physcial address로 접근해야 한다. 따라서 2번의 메모리 접근이 일어나기 때문에 성능이 내려가게 된다.

이를 해결하기 위해서 MMU에 TLB(Translation Lookaside Buffer)를 넣어서 만약 TLB에 cache되있어 hit가 일어난다면 바로 physical address에 접근할 수 있게 한다. TLB는 하드웨어의 cache라고 생각하면 된다.

32-bit address를 4KB의 page로 나타내야 한다면 4MB 크기의 Page Table이 필요한데, 이를 하드웨어 MMU에 넣기란 무리이다.

위에 있는 Page Table을 Page Table Base Line Register로 바꿔주면 된다.


TLB Basic Algorithm

32-bit address에 4KB의 page크기를 갖는다고 가정

VPN = (VirtualAddress&VPN_MASK)>>SHIFT

VPN을 구하는 공식이다. VPN은 20bit이므로 VPN_MASK는 1111 1111 1111 1111 1111 0000 0000 0000가 될 것이다.

SHIFT는 offset의 크기 즉, 32-20=12 12가 될 것이다.

만약 Hit가 일어난다면 offset=VirtualAddress & OFFSET_MASK가 일어나는데 OFFSET_MASK는 VirtualAddress에서 12bit를 때어내야 하므로 0000 0000 0000 0000 0000 1111 1111 1111이 될 것이다.

이를 용하여 AccessMemory를 하면된다.

 

Hit가 되지 않았을 경우에는 어떻게 해야 할까?

Page Table Base Line Register에서 VPN번째 index의 메모리에 접근하고, valid한 주소라면 TLB_Insert를 통하여 PTBR에 주소값을 넣어주고 RetryInstruction()을 하여 Hit가 일어나게 한다.

위와 같은 page table이 있고 위의 식이 돌아간다면 TLB hit rate은 70%가 된다.


만약 현재 접근이 됐는데 미래에 접근을 또 할거라면 Temporal Locality라고 한다.

만약 현재 접근이 됐는데 미래의 접근이 바로 옆의 page라면 이걸 Spatial Locality라고 한다.

 

배열에 반복문을 사용한다면 Temporal Locality일 것이다.


Hardware가 TLB miss를 처리한다면 CISC 방식이라고 한다.

Software가 TLB miss를 처리한다면 RISC 방식이라고 한다.


TLB entry

Directed map 방식과 Full Associative방식이 있는데 Directed map 방식에는 TLB에 올 수 있는 Page Table의 주소가 정해져 있지만 Full Associative방식에는 아무 Page Table주소가 올 수 있다. TLB는 Full Associative방식을 사용한다.


TLB Issue : Context Switching

Process들끼리는 TLB(Transition Lookaside Buffer)를 공유하는데 context switch가 일어나게 되면 해당 주소가 어느 프로세스 것인지 모르게 되는 상황이 발생하게 된다.

따라서 ASID(address space identifier)를 사용하여 어느 프로세스 것인지 구분해주면 된다.

위와 같이 한 프로세스가 같은 메모리 주소를 사용하게 하면 실질적인 메모리 공간을 줄일 수 있어서 효율적이다.

프로세스가 PA와 PB가 동일한 파일을 읽는다면 PB는 Heap과 Stack영역만 할당해 주면 된다.


TLB Replacement

TLB는 LRU(Least Recently Used) 방식을 이용하여 Replacement를 진행한다.

'3-2 > 운영체제' 카테고리의 다른 글

Swapping Mechanisms  (0) 2021.11.08
Advanced Page Tables  (0) 2021.10.22
Introduction to Paging  (0) 2021.10.08
Segmentation  (0) 2021.10.08
Memory API  (0) 2021.10.08