[cs] 메모리와 캐시메모리

문돌이 개발자·2023년 10월 3일
0

RAM의 특징과 종류

RAM의 특징

  • 휘발성 저장 장치
  • 전원이 꺼지면 저장된 내용을 잃어버린다

RAM의 용량과 성능

  • 메모리가 클수록 많은 프로그램을 RAM에 로드한 후에 실행 가능할 수 있다.
  • 모든 프로그램을 로드할 수 있을만큼 충분히 크다면 그 이상의 용량은 성능에 영향을 끼치지 않는다.

DRAM(Dynamic RAM)

  • 저장된 데이터가 동적으로 사라지는 RAM
  • 데이터의 소멸을 막기 위해서 주기적으로 재활성화
  • 소비전력이 비교적 낮고, 저렴하고 집적도가 높아 일반적으로 RAM으로 사용되는 RAM

SRAM(Static RAM)

  • 저장된 데이터가 정적인 RAM
  • DRAM보다 일반적으로 더 빠름
  • 상대적으로 소비전력이 높고 가격도 높고 집적도가 낮아 “대용량으로 만들어질 필요는 없지만 속도가 빨라야 하는 저장 장치” (캐시메모리)에 사용됨

SDRAM(Synchronous DRAM)

  • 특별한 DRAM
  • 클럭 신호와 동기화된 DRAM
  • 클럭마다 CPU와 정보를 주고받을 수 있는 DRAM

DDR SDRAM(Double Data Rate SDRAM)

  • 특별한 SDRAM
  • 최근 가장 대중적으로 사용되는 RAM
  • SDRAM에보다 대역폭이 2배 넓어 전송속도가 2배 빠름

메모리의 주소 공간

  • 물리 주소는 메모리 하드웨어가 사용하는 주소
  • 논리 주소 CPU와 프로그램이 사용하는 주소

💡 물리 주소와 논리 주소를 나누는 이유

  • 프로그램이 실행되고 종료될 때마다 메모리에 적재되는 위치가 달라짐
  • 메모리 주소가 바뀌어도 프로그램은 일정하게 동작하기 위해 자신 고유의 메모리 주소를 사용

메모리 관리 장치(Memory Management Unit

  • 프로그램의 논리 주소로는 물리 주소에서 같은 데이터를 찾을 수 없다. (물리주소와 다른 프로그램 고유의 논리주소를 사용하기 때문
  • CPU가 발생시킨 논리 주소에 베이스 레지스터 값을 더하여 논리 주소를 물리 주소로 변환한다.
  • 베이스 레지스터에는 프로그램의 시작 물리 주소가 저장되어 있다.
  • 논리 주소는 프로그램의 시작점으로부터 떨어진 거리와 같음

한계 레지스터

  • 프로그램의 영역을 침범할 수 있는 명령어의 실행을 막음
  • 한계 레지스터는 논리 주소의 최대 크기를 저장
  • 한계 레지스터에 저장된 주소의 크기보다 큰 명령어 주소의 실행을 막음
  • CPU는 메모리에 접근하기 전 논리 주소가 한계 레지스터보다 작은지 항상 검사
  • 실행 중인 프로그램의 독립적인 실행 공간을 확보
  • 하나의 프로그램이 다른 프로그램을 침범하지 못하게 보호

캐시 메모리

  • CPU가 메모리에 접근하는 데 걸리는 시간은 연산 시간에 비교해서 많이 느리다.

메모리 계층 구조

  • CPU와 가까운 저장 장치는 빠르고, 멀리 있는 저장 장치는 느리다
  • 속도가 빠른 저장 장치는 저장 용량이 작고, 가격이 비싸다

캐시 메모리

  • CPU와 메모리 사이에 위치한 레지스터보다 용량이 크고 메모리보다 빠른 SRAM 기반의 저장 장치
  • CPU의 연산 속도와 메모리 접근 속도의 차이를 조금이나마 줄이기 위해 탄생
  • CPU가 매번 메모리에 왔다 갔다 하는 건 시간이 오래 걸리기 때문에,
    메모리에서 CPU가 사용할 일부 데이터를 미리 캐시 메모리로 가지고 와서 사용
  • 일반적으로 CPU와 가까운 순서대로 L1, L2, L3 계층의 캐시 메모리를 가진다. (가까울수록 빠르고 용량이 작다)

📖 멀티코어 프로세서의 경우 각 코어별로 L1, L2 캐시를 갖고 L3 캐시는 공용으로 갖는 형태로 설계되는 경우가 많다

참조 지역성의 원리

  • 캐시 메모리는 메모리보다 용량이 작기 때문에 메모리의 모든 내용을 저장할 수 없음
  • 시간 지역성: CPU는 최근에 접근했던 메모리 공간에 다시 접근하려는 경향이 있다.
  • 공간 지역성: CPU는 접근한 메모리 공간 근처를 접근하려는 경향이 있다.

📖 캐시 히트캐시 미스

  • CPU가 자주 사용할 법한 내용을 예측하여 저장

    캐시 히트: 예측이 들어맞을 경우(CPU가 캐시 메모리에 저장된 값을 활용할 경우 → 성능 상승)

    캐시 미스: 예측이 틀렸을 경우(CPU가 메모리에 접근해야 하는 경우 → 성능 하락)

    캐시 적중률: 캐시 히트
    횟수 / (캐시 히트 횟수 + 캐시 미스 횟수)

    캐시 라인: 메모리에서 캐시 메모리에 데이터를 적재할 때 데이터 크기만큼만 적재하지 않고 공간 지역성을 활용하기 위해 특정 크기(캐시 라인)만큼 적재한다.
profile
까먹고 다시 보려고 남기는 기록

0개의 댓글