Computer Science
탄탄한 기반 실력을 위한
전공과 이론 지식 모음
Today I Learned!
배웠으면 기록을 해야지
TIL 사진
Flutter 사진
Flutter로 모바일까지
Embedded Software Engineer
거꾸로캠퍼스 코딩랩 Flutter 앱개발 강사
스파르타코딩클럽 즉문즉답 튜터
카카오테크캠퍼스 3기 학습코치
프로필 사진
박성민
임베디드 세계에
발을 들인 박치기 공룡
임베디드 사진
EMBEDDED SYSTEM
임베디드 SW와 HW, 이론부터 실전까지
ALGORITHM
알고리즘 해결 전략 기록
🎓
CAU 소프트웨어학부 우등 졸업
텔레칩스 차량용 임베디드 스쿨 3기
AppleDeveloperAcademy@POSTECH 1기
깃허브 사진
GitHub
프로젝트 모아보기
LinkedIn
인스타그램 사진

학부생 CS/컴퓨터 시스템 설계

Computer System Design - 13 : TLB (2)

sm_amoled 2019. 7. 7. 15:24

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