View

300x250

TLB

Virtual Memory의 작동이 내 생각에는 Cache Memory의 작동방식과 거의 일치하는 것 같다. ( Direct Mapped 방식, N-way SA 방식 ) 이 방식들을 이용하기 위해서는 Page Table을 먼저 작성해야 한다.

Virtual Address는 [ Virtual Page Number + Page Offset ] 으로 구성되어있다. 앞의 VP#는 tag와 index로 또 나눌 수 있고, 이를 이용해 Virtual Page Table을 작성할 수 있다. ( Virtual Address -> TLB -> Physical Address )

TLB Hit

Virtual Page Table에 유효한 주소가 있다면 TLB Hit!

Virtual Address를 Physical Address로 변환하는 과정을 거치기 위해서 파이프라인 구조에서 Memory Access를 위한 Instruction이 한 차례 더 필요하다. … 1 CLK의 시간이 더 소모된다.

TLB Miss

HW가 알아서 처리해준다.

Simple TLB Miss - 약 수십 Cycle이 소요된다.

Page가 Main Memory에는 load되어있는 상태 - 단순히 TLB에 알맞은 Page를 Load해주면 된다. Table의 Base Address가 CPU에 load 되어있으므로, Page Num을 찾아가서 load한다.

Page Fault - 약 수십만 Cycle이 소요된다. ( 치명적!! )

Page가 Main Memory에 load되어있지 않은 상태 - Storage에서 필요한 Page를 Memory에 load + TLB에 Table Load 수행

  • TLB Miss가 발생하면, 'Data Abort Exception'이 발생한다. = PipeLine에서 읽어들인 Inst 제거 + TLB Miss 명령 실행

Multi-Level의 Page Table

만약 48bit Virtual Address를 사용한다면, 64G개의 Page가 존재하고, 각 Page마다 4Byte의 주소를 요구한다면 Page Table 하나당 256GB의 크기를 Main Memory 에 담아야 한다. ( 내껀 16GB… MainMem이 1.5TB인 MacPro를 사면 해결할 수 있을 듯 ㅋㅋㅋ )

따라서 주소에 필요없는 값들을 제거해 크기를 줄여준다. ( 같은 자릿수끼리 묶어서 )

여러 Level의 Page Table을 이용 - 알맞은 Address를 찾아간다 : TLB Walk

320x100
Share Link
reply
반응형
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31