본문으로 이동
메뉴 여닫기
환경 설정 메뉴 여닫기
개인 메뉴 여닫기
로그인하지 않음
지금 편집한다면 당신의 IP 주소가 공개될 수 있습니다.
Cache Memory

CPU와 주기억장치 사이에 있는 고속 메모리로, CPU와 주기억장치의 처리 속도 차이를 보완하기 위한 기억장치

  • 구역성(Locality)의 원리에 따라 CPU가 참조하는 데이터를 예측하여 캐시 메모리에 미리 담아 둔다.
  • 캐시 메모리에 있는 데이터는 주기억장치를 참조하지 않고 고속의 캐시메모리에서 바로 가져와 실행한다.

캐시 메모리 성능

편집 원본 편집
  • Hit Rate(적중률) = 적중 횟수 / 접근 횟수 * 100
  • Miss Rate(실패율) = (100 - 적중률)

메모리 사상 기법

편집 원본 편집
Direct Mapping

  • 메모리 주소와 캐시의 순서를 일치시킴
  • ex) 메모리가 1~100, 캐시가 1~10으로 가정하면
    • 1~10까지의 메모리는 캐시의 1에 할당, 11~20까지의 메모리는 캐시의 2에 할당
  • 구현 정말 간단하지만 캐싱 효율이 떨어져 잦은 교체 발생
  • 적중률이 낮고 성능이 낮은 단순한 방식
Fully Associative

  • 순서를 일치시키지 않음
  • 필요한 메모리값을 캐시의 어디든 저장 가능
  • 찾는 과정은 느리지만 필요한 캐시들 위주로 저장할 수 있기 때문에 적중률이 높음
  • 캐시가 일반 메모리보다 속도가 훨씬 빠르므로 적중률이 높은 것이 유리

직접/연관 사상

편집 원본 편집
Set Associative

  • 연관매핑에 직접매핑을 합쳐 놓은 방식
  • 순서를 일치시키고 저장하되, 일정 그룹을 두어 그 그룹 내에서 저장토록 함
  • ex) 메모리가 1~100, 캐시가 1~10으로 가정하면
    • 캐시 1~5에는 1~50의 데이터 저장 가능
  • 블록화가 되어 있으므로 검색 효율 증가, 적중률도 일정 수준 보장

교체 알고리즘

편집 원본 편집
Data Replacement Algorithm

※ 직접 사상의 경우 교체 알고리즘 선택 불가

  • Random
    • 무작위로 선택하여 교체
    • 비효율적이지만 구현이 간단하여 많이 사용
  • Round Robin
    • 공평하게 돌아가면서 선택
    • 구현이 간단하지만 효율이 좋지 않음
  • LRU(Least Recently Used)
    • 가장 오랫동안 이용되지 않은 데이터 교체
    • 가장 이상적이지만 CPU Cache에서는 판단이 어려움
Write Strategy
  • Write Through
    • 데이터 변경 시 캐시와 메모리에 곧바로 기록
    • 구현이 쉬우며 캐시와 주기억장치 사이의 불일치가 생기지 않음
    • 잦은 쓰기로 속도 느려짐
  • Write Back
    • 캐시에 먼저 기록하고 메모리엔 나중에 기록
    • 속도가 빠르지만 일관성 문제 발생 가능성
      • Dirty Bit, Flag 등 이용 필요
Cache Coherence

멀티코어 프로세서나 대칭형 다중 처리(SMP) 시스템처럼 코어마다 자기 캐시를 갖는 환경에서는 같은 메모리 블록의 복사본이 여러 캐시에 생긴다. 한 코어가 값을 바꿔도 다른 코어의 캐시에는 옛 값이 남아 있으면 잘못된 데이터를 읽게 된다. 이를 막는 것이 캐시 일관성이다. DMA로 입출력 장치가 주기억장치를 직접 바꿀 때도 같은 문제가 생긴다.

위의 쓰기 정책은 한 캐시와 주기억장치 사이의 불일치를 다룰 뿐, 다른 코어 캐시의 복사본 문제는 해결하지 못한다. Write Through를 써도 다른 코어의 캐시에 남은 옛 값은 그대로이므로 별도의 일관성 프로토콜이 필요하다.

구분 스누피 프로토콜(Snoopy) 디렉토리 프로토콜(Directory)
원리 모든 캐시 제어기가 공유 버스를 엿보며(snoop) 다른 캐시의 쓰기를 감지해 자기 복사본을 무효화·갱신 블록마다 어느 캐시가 복사본을 가졌는지 디렉토리에 기록하고, 해당 캐시에만 무효화 메시지 전송
통신 브로드캐스트 점대점(필요한 캐시에만)
확장성 버스 대역폭 한계로 코어 수가 적을 때 적합 코어·소켓이 많은 대규모 시스템(NUMA)에 적합
지연 짧음(버스 한 번) 디렉토리 조회 단계가 추가되어 김
비용 구현 단순 디렉토리 저장 공간과 제어 복잡도

스누피 방식의 대표 구현이 각 캐시 블록을 Modified, Exclusive, Shared, Invalid 네 상태로 관리하는 MESI 프로토콜이다. 자세한 내용은 캐시 일관성 문서를 본다.

설계 시 고려사항

편집 원본 편집
  • 캐시 메모리 사이즈
  • 전송 블록 사이즈
  • 교체 알고리즘