개발 기록

매컴싸 - 캐시의 지역성 본문

카테고리 없음

매컴싸 - 캐시의 지역성

수염차 2021. 11. 21. 19:35

# 캐시 메모리는 실제 메모리와 CPU 사이에서 빠르게 전달을 위해서 미리 데이터들을 저장해두는 좀더 빠른 메모리이다.

프로세서가 매번 메모리에 접근해 데이터를 받아오면 시간이 오래 걸리기 때문에 캐시에 자주 사용하는 데이터를 담아두고, 해당 데이터가 필요할 때 프로세서가 메인 메모리 대신 캐시에 접근하도록해서 처리 속도를 높인다.

--> 캐시가 효율적으로 동작하려면, 캐시의 적중률(hit-rate)을 극대화 시켜야함 !

 

++)

 CPU가 주기억장치 메모리에 접근하기 전에 캐시 메모리에서 원하는 데이터 존재 여부를 확인하는데,

이때 필요한 데이터가 있는 경우 Hit(적중), 없는 경우 Miss(실패) 라고 한다.

 

 요청한 데이터를 캐시 메모리에서 찾을 확률은 Hit Ratio(적중률)이라고 한다.

 캐시 메모리의 성능은 적중률에 의해 결정된다.

 

   - 적중률 = 캐시 메모리 적중 횟수 / 전체 메모리 참조 횟수

 

 

# 지역성 원리

 

--지역성이란 , 프로세스가 시간/공간적으로 유사한 데이터를 집중적으로 참조하는 성질을 의미한다.

자주 쓰이는 데이터는 시간적 혹은 공간적으로 몰려 있을 가능성이 높다.

-캐시는 적중률을 높이기 위해 지역성의 원리를 사용한다.

 

1. 시간 지역성(Temporal locality)

: 최근 접근한 데이터에 다시 접근하는 특성

  • 특정 데이터가 한번 접근되었을 경우, 가까운 미래에 또 한번 데이터에 접근할 가능성이 높은 것
  • 메모리 상의 같은 주소에 여러 차례 읽기 쓰기를 수행할 경우,
    • 상대적으로 작은 크기의 캐시를 사용해도 효율성을 꾀할 수 있다.

- 예를 들어 for문에서 조건 변수 (let i = 0;)를 선언했을 때, 해당 변수는 for문이 끝나기 전까지 계속 쓰일 확률이 높다

 

2. 공간 지역성(Spatial locality)

: 최근 접근한 데이터의 주변 공간에 다시 접근하는 특성

  • 특정 데이터와 가까운 주소가 순서대로 접근되었을 경우.
  • 캐시의 경우 한 메모리 주소에 접근할 때 그 주소뿐 아니라 해당 블록을 전부 캐시에 가져오게 된다.
  • 이때 메모리 주소를 오름차순이나 내림차순으로 접근한다면,
    • 캐시에 이미 저장된 같은 블록의 데이터를 접근하게 되므로 캐시의 효율성이 크게 향상된다

-예를 들면 int a[10] 이라고 선언을 한다면 프로그램 중간에서 a[0]사용 후 인접한 a[1]사용될 확률이 높다는 것이다.

 

-프로세스 실행 중 접근한 데이터의 접근 시점과 메모리 주소를 표시한 그림

-가로축은 실행 시간, 세로 축은 메모리 주소. 

 

 

*메모리 주소

 메모리 위치에 대한 식별자로, 컴퓨터 프로그램이나 하드웨어 장치가 데이터를 저장하고 나중에 이를 가져오는 장소이다. 일반적으로 이는 이진 형태의 숫자로 되어 있다. (위키백과)

 

*메모리 블록

메모리 블록(memory block)은 운영 체제 또는 프로그램이 기억공간을 임의적으로 분할하여 사용하는 하나의 단위를 말한다. 블록의 크기가 일정한 것을 페이지, 그렇지 않은 것을 세그먼트라고 한다.  (위키백과)

 

 

출처

캐시가 동작하는 아주 구체적인 원리

캐시의 지역성이란?

평균 메모리 액세스 시간

3DMP - 캐시 메모리와 데이터 지역성

Comments