이번에는 페이지 테이블을 어떻게 구현하는지에 대해 공부해보자.
[페이지 테이블 구현 방법]
메인 메모리에는 페이지 테이블이 존재한다. 페이지 테이블은 PTBR과 PTLR로 구성된다.
→ PTBR(Page Table Base Register) : 페이지 테이블을 가리킨다.
→ PTLR(Page Table Length Register) : 페이지 테이블의 사이즈를 가리킨다.
메인 메모리에 저장하는 방법은 다음과 같은 문제점을 가진다.
→ 문제점 : 페이지 테이블을 찾기 위한 메인 메모리 접근 1번, 실제 메모리 읽기 위해 1번 총 2번 접근해야함. 속도가 느림.
→ 해결 : 페이지 테이블을 TLB(Translation Look-Aside Buffer)라는 캐쉬 메모리에 두는 방법.
[TLB 캐쉬 메모리는 이용하는 방법]
1. 한 프로세스 페이지 테이블을 갖는 경우
-> 장점 : 찾기 쉬움.
-> 단점 : 문맥교환시 테이블을 다 지우고 새로 만들어야함.
2. 여러 프로세스의 페이지 테이블을 갖는 경우
-> 장점 : 문맥교환시 테이블을 지울필요가 없음.
-> 단점 : 프레임 번호가 나오면 자신의 프로세스 엔트리인지 확인해야함 (ASIDs 필요)
[ASIDs(address-space identifiers)]
→ TLB 항목이 어느 프로세스에 속한 것인지를 알려주며 그 프로세스의 정보를 보호하기 위해 사용됨. TLB 항목과 ASID가 같은지 검사함.
[TLB 구성 / Associative Memory]
연관 메모리는 key값을 주면 value값을 결과로 보내준다.
TLB를 이용한 하드웨어의 도식도는 다음과 같다.
만약 TLB에 요청한 정보가 있다면 프레임 번호로 p를 대체한다.
만약 TLB에 요청한 정보가 없다면 메인메모리의 page table을 참고하여 프레임 번호를 p로 대체한다.
[실질 메모리 접근 시간]
TLB를 썼을 때 얼만큼의 시간이 감소되는지 계산해보자.
TLB에서 발견할 확률을 80%, TLB 탐색 시간 : 20ns, 메모리 접근 : 100ns 라고 할 때
실질 메모리 접근 시간 = 0.8(20 + 100) + 0.2(20 + 100 + 100)이 된다.
TLB에서 찾을 확률 0.8
TLB 탐색 시간 20
메인 메모리 접근 시간 100
TLB에서 못찾을 확률 0.2
TLB 탐색 시간 20
페이지 테이블 접근 100
TLB 메모리 접근 100