본문 바로가기
cs/computer architecture

캐시 메모리(cache memory)

by 펀구구 2023. 4. 13.

정의

  • 속도 차이가 나는 두 장치 사이의 병목 현상을 줄이기 위하여 사용하는 메모리이다.
  • ex) cpu와 주기억장치 사이에 있는 캐시 메모리, 웹브라우저 캐시 파일은 하드디스크와 웹 페이지의 사이의 병목 현상 완화

cpu와 캐시 메모리

  • cpu와 주기억장치는 속도 차이가 크다. 이 속도차이를 줄이기 위하여 캐시 메모리를 사용한다.
  • 주기억장치에서 자주 읽어오는 데이터를 캐시 메모리에 미리 저장해두고 해당 데이터가 필요하면 캐시 메모리에서 가져오는 방식이다.
  • 캐시 메모리는 속도가 빠르지만 가격이 비싸다. 하나의 cpu에는 2~3개의 캐시 메모리가 사용된다.(L1, L2, L3이며 L1 캐시부터 사용된다.)
  • 듀얼 코어 프로세서같은 경우에는 각각 코에어 L1 캐시가 존재하며 L2 캐시는 공유하는 형식으로 이루어져있다.
  • L1 캐시가 128kb라면 64kb는 처리 직전 명령어를 저장하고 나머지 64kb에는 실행 후 명령어를 저장한다.

캐시 메모리가 효율적으로 동작될 수 있는 이유 - 지역성(locality)

시간 지역성

  • for, while문에 의해서 하나의 변수가 반복적으로 사용될 가능성이 높다.
  • 특정 데이터에 한번 접근해서 가져온 경우, 그 데이터가 가까운 미래에 또 한번 접근될 가능성이 높은 것.

공간 지역성

  • a[0], a[1]과 같이 사용된 데이터 근처의 연속된 데이터가 사용될 가능성이 높다.
  • 즉 캐시 메모리는 나중에 사용될 가능성이 있는 주변 데이터도 같이 가져와서 저장하고 있는다.

캐시 미스의 세가지 경우

cold miss

  • 해당 메모리 주소를 처음 불러서 나는 miss

conflict miss

  • 하나의 캐시 메모리 영역에 여러 메인 메모리 주소가 할당된 것. 예를 들어서 a, b 데이터를 한 캐시 메모리 영역에 저장해야 한다고 치면 b 데이터가 캐시 메모리에 저장되어 있을때 a 데이터를 캐시메모리에서 찾으려고 하면 miss가 발생할 것이다. 이것이 conflict miss다. 아래 그림에서처럼 00001과 01001을 동시에 읽어야 할 때 conflict miss 발생.

capacity miss

  • 캐시의 용량이 부족해서 발생하는 miss

캐시 메모리 동작 방식

direct mapped cache

  • 하나의 캐시 메모리 영역에 여러 메인메모리 주소를 연결시키는 방법.
  • 예를 들어 11000, 10000, 01000, 00000인 메모리 주소는 000인 캐시 메모리에 저장하는 방법이다. 이 때 000을 인덱스필드, 000 앞 두 자리를 태그필드, 나머지 데이터필드로 구성된다. 찾고자 하는 데이터가 맞는지 확인하기 위해서 000 레지스터를 접근 후 태그필드를 비교하며 확인한다.
  • 예를 보면 알듯이 해당 방법은 conflict miss가 발생할 여지가 있다.

fully associative cache

  • 비어있는 캐시 메모리가 있으면 마음대로 저장하는 방식이다.
  • 저장할 때는 간단하지만 데이터를 탐색할 때 문제가 있다.
  • 조건이나 규칙 없이 데이터를 저장했기 때문에 모든 블럭을 탐색해야 한다는 문제가 있다.

set associative cache

  • direct와 fully 방식을 섞은 것이다. 특정 행의 아무 열에나 데이터를 저장하는 방식이다. direct에 검색 속도는 느리지만 저장 속도는 빠르고 fully에 비해 저장이 느린 대신 검색이 빠른 중간형이다.

'cs > computer architecture' 카테고리의 다른 글

메모리 계층 구조  (0) 2023.04.15
파이프라이닝  (0) 2023.04.15
RISC, CISC  (0) 2023.04.15
고정 소수점 & 부동 소수점(fixed point & floating point)  (0) 2023.04.15
컴퓨터의 구성(버스)  (0) 2023.04.14