[컴퓨터 구조] TLB와 cache가 통합된 memory 접근 방식

December 06, 2023


Main memoryDisk 간의 메모리 매핑에 대해 살펴보겠습니다.

메모리 계층 구조

다시보는 메모리 계층 구조 - MM - disk

이번 글에서는 main memory (주 기억 장치)와 secondary memory (보조 기억 장치)간의 접근 방식에 대해 살펴보겠습니다.

Virtual memory

  • 각각의 프로그램은 프로그램만의 가상 주소 공간을 가지는 것처럼 컴파일됨

    → virtual 주소를 physical 주소로 변환할 수 있어야 함

memory access 요약

  • 파란색인 물리 주소 정보와 빨간색인 캐시 정보를 동시에 확인해서, 먼저 도착하는 데이터를 CPU로 보냅니다.

    A. cache hit인 경우, cache 속도가 더 빠르므로 더 먼저 도착합니다. 그리고 나중에 도착한 정보는 무시합니다.

    B. cache miss인 경우, cache miss라는 정보를 먼저 수신하고, 나중에 메모리에서 도착한 정보를 사용합니다.

메모리 접근 순서도

memory access 요약2 도식도

  1. 프로그램 내부의 가상 주소를 변환하기 위해서 TLB에서 가상 주소에 해당하는 해당 물리 주소 값이 있는지 확인

    • 없으면(miss), Page table로 이동해서 해당 페이지가 있는지 확인
    • 없으면(page fault), Disk까지 접근해서 페이지 교체 후, TLB까지 변경 사항을 반영
  2. 물리 주소를 얻었으면, 메모리내 해당 물리 주소내 데이터가 cache에 있는지 확인

    • 있으면(hit), cache에서 원하는 데이터를 빠르게 반환
    • 없으면(miss), memory로 접근해 해당 데이터를 cache에 새롭게 쓰고, 데이터를 반환

TLB와 cache간의 관계

tlb cache hit miss

프로세스는 가상 메모리 주소를 사용해서 먼저 TLB, Page table를 거쳐 물리 주소를 구하고 이 물리 주소가 Cache에 있는지 확인합니다.

TLB → Page table → Cache

모두 hit하는 것이 가장 이상적인 경우이지만 항상 그럴 수는 없습니다.

위의 3 계층 모두 miss가 발생하는 경우, 이를 page fault라고 하며, 매우 느려지는 원인이 됩니다.

  • TLB에서의 hit / miss 여부는 cache의 hit / miss 와는 관계가 없음
  • TLB가 hit인데 page table이 miss인 경우와 page table에 해당 정보가 없는데 cache가 hit인 경우는 존재하지 않음
  • Page table에 없는 내용은 cache에도 없음

Profile picture

이재원

이해하기 쉬운 코드를 작성하려 고민합니다.


© 2024 Won's blog Built with Gatsby