Cache Memory

개념
속도가 빠른 장치와 느린 장치간의 속도차에 따른 병목 현상을 줄이기 위한 범용 메모리

I. 장치간 속도차에 따른 병목 현상 제거를 위한 Cache Memory의 개요
    가. 캐시 메모리(Cache Memory)의 정의
 

  • 속도가 빠른 장치와 느린 장치간의 속도차에 따른 병목 현상을 줄이기 위한 범용 메모리

 

    나. Cache Memory의 설계 목표

  • Cache 적중율(Hit Rate)의 극대화로 Cache Access 시간 최소화
  • Cache 실패율(Miss Rate)에 따른 지연시간(Miss Penalty)의 최소화
  • 공유 메모리와 Cache 간의 일관성 유지

 

    다. 캐시 메모리의 특징

구분

설 명

비고

Locality

블록 단위의 메모리 참조

시간, 공간

Mapping

주기억 장치와 캐시 메모리 간의 메모리매핑 적용

직접, 연관

Coherence

병렬처리시 Local Cache와 공유 메모리간 데이터 일관성 유지

공유 Cache

 

 

    라. Cache Memory 적중율 극대화 원리 Locality

구분

내용

사례

시간적 지역성

  •  Temporal locality
  •  최근 사용된 데이터의 재 이용율이 높음

Loop, Stack, Sub Program

공간적 지역성

  •  Spatial locality
  •  최근 사용된 데이터의 인접 데이터의 사용율이 높음

Array, 순차코드

순차적 지역성

  •  Sequential locality
  •  따로이 분기(branch)가 없는 한 데이터가 기억장치에 저장된 순서대로 순차적으로 인출되고 실행될 가능성이 높음
 

 

 

II. 듀얼코어 프로세서에서의 캐시메모리의 구성도 및 종류
    가. 듀얼코어 프로세서에서의 캐시메모리 구성도
 

  • 듀얼코어 프로세스의 경우 각 코어마다 L1캐시 메모리와 두 코어가 서로 공유하는 L2 캐시 메모리가 내장.

    나. 캐시 메모리의 종류

구분

설 명

비고

L1 Cache

일반적으로 CPU 칩 안에 내장되어 데이터 사용/

참조에 가장 먼저 사용됨

8~64KB

L2 Cache

용도와 역할은 L1 캐시와 비슷하지만 속도는 L1

캐시에 비해 느림

64KB~4MB

L3 Cache

L1, L2 캐시와 동일한 원리로 작동하며 CPU가 아닌 메인보드에 내장되는 경우가 많음.

8MB(i7)

 

III. 캐시 메모리의 블록 단위 메모리 참조원리 지역성(Locality)
    가. 지역성(Locality)의 전제조건

  • 프로그램은 모든 코드나 데이터를 균등(시간적, 공간적)하게 Access하지 않는다는 특성을 기본으로 함

 

    나. Locality의 정의

  • 기억 장치 내의 정보를 균일하게 Access하는 것이 아닌 어느 한 순간에 특정 부분을 집중적으로 참조하는 특성

 

    다. Locality의 원리

  • Cache 접근시간(Access Time)의 최소화
  • Cache 적중률(Hit Ratio)의 최대화
  • Cache Hit Ratio = (Hit 수) / 주기억장치 접근의 총수

 

    라. Locality의 종류

구분

설 명

시간적 Locality

최근에 참조된 기억장소가 가까운 장래에 계속 참조될 가능성이 높은 성질

ex)순환(Looping), 서브프로그램, LRU(Least Recently used)

공간적 Locality

최근에 참조된 기억장소와 가까운 기억장소가 가까운 장래에 계속 참조될 가능성이 높은 성질

ex)Array, Sequential Processing

순차적

Locality

따로이 분기가 없는 한 데이터가 기억장치에 저장된 순서대로 순차적으로 인출되고 실행

 

 

IV. 캐시 메모리 병렬처리에 따른 일관성 해결책 Cache Coherence
    가. 캐시 메모리 일관성 문제
 
 

  • 공유메모리 구조에서 다중 프로세스 통신에 의한 메모리 충돌로 인한 성능 저하 발생으로 해결하기 위해 각 CPU에 Local Cache를 탑재하여 Local Cache와 공유 메모리간 데이터의 불일치 발생

 

    나. 캐시 메모리 일관성 유지기법

구분

설 명

공유 Cache사용

-모든 프로세서가 하나의 Cache사용

-구조가 간단, 프로세서의 충돌이 심함

공유변수 Cache 변수 미사용

-공유변수를 Cache에 저장하지 않으므로 일관성을 유지하지만 성능저하를 야기

버스감시 매커니즘 적용

-스누프제어기:변경에 대한 자신의 캐시블럭상태제어

-쓰기갱신:공유블럭 갱신시 다른 모든 캐시에 갱신되넌 정보가 보내짐

-쓰기무효:다중읽기, 한번에 하나만쓰기, 쓰기동작을 할 때 다른 캐시의 블록을 무효화시킨후 쓰기 동작을 배타적으로 수행

디렉토리 기반 일관성 유지 프로토콜

-캐시의 전역정보 상태를 디렉토리에 저장하여 데이터 일관성 유지

-Full Map, Limited, Chained 방식

 

 

V. 캐시 메모리와 주기억장치 Mapping
    가. 캐시 메모리 Mapping의 목적

  • Cache의 용량이 주기억장치의 용량보다 적기 때문에 주기억장치의 일부분만 캐시로 적재될 수 있음
  • 제안된 캐시 용량으로 최고의 적중률을 얻을 수 있는 방법 필요

 

    나. 캐시 메모리 Mapping 기법의 종류

구분

설명

Direct Mapping

개념

메인 메모리를 일정한 크기의 블록으로 나누고 각각의 블록을 캐쉬위 정해진 위치에 매핑하는 방식

 

 

장점

가장 쉽고 간단한 구현 방식

단점

비어 있는 라인이 있더라도 동일 라인의 메모리 주소에 대하여 하나의 데이터밖에 저장할 수 없음

캐시의 성능을 저하시킴

Full Associative Mapping

개념

직접매핑 방식의 단점을 개선하기 위해 태그 필드를 확장하여 캐시의 어떤 라인과도 무관하게 매핑 시킬수 있는 매핑 방법

 

 

장점

캐시를 효율적으로 사용하게 하여 캐시의 히트율 증가

단점

CPU가 태그값을 참조할 때 마다 어느 위치에 해당 데이터의 블록이 있는지 알아내기 위해 전체 태그 값을 모두 병렬적으로 비교

구성과 과정이 매우 복잡함

Set Associative Mapping

개념

위의 두 매핑방식의 장점을 취하고 단점을 최소화한 절충안

많은 마이크로프로세스에서 이 방식을 취하고 있음

캐쉬를 N개의 세트들로 나누고 각 세트들은 L개의 라인들로 이루어지게 구성, 전체 메인 메모리는 각 세트의 크기인 32Kbyte 단위로 나뉘어 태그 값이 매겨지고( 직접 매핑 방식) 각각 4Kbyte 단위의 라인 사이즈로 다시 나뉘어져 각각의 세트에 매핑(어소시에이트브 매핑)

 

 

 

    다. 캐시 메모리 교체 알고리즘

구분

설 명

비고

LRU

사용되지 않고 가장 오래 캐시에 머물러 있던 블록 교체

Least Recently Used

FIFO

캐시 내에 가장 오래 머물러 있었던 블록을 교체

First In, First Out

LFU

캐시 내에 있는 블록 중 가장 사용빈도가 낮은 블록을 교체

Least Frequently Used

Random

블록을 임의로 선택

임의

Optimal

향후 가장 참조되지 않을 블록 교체

구현불가

 

 

<참고>
 
 
 

댓글