본문 바로가기
Computer Architecture/Virtual Address & Cache

메모리 계층 구조(Memory Hierarchy)와 캐시

by FastBench 2024. 11. 1.
반응형

- 캐시 메모리 시리즈 모아보기 -

https://microelectronics.tistory.com/102


메모리 계층 구조(Memory Hierarchy)와 캐시

1. 메모리 계층 구조의 필요성

메모리 계층 구조의 목표는 큰 용량과 빠른 속도를 동시에 제공하는 메모리 시스템을 만드는 것이다. 프로세서에 비해 DRAM은 매우 느리기 때문에, 메모리 계층 구조를 통해 이러한 성능 격차를 줄여야 한다.

1.1. 메모리의 크기와 속도 문제
메모리는 크고 빠르게 만들어야 하지만, 현재 사용 가능한 기술은 다음과 같은 특성을 갖는다:

  • 하드 디스크(HDD): 매우 큰 용량을 제공하지만 속도가 느리다.
  • DRAM: 속도가 빠르지만 HDD에 비해 용량이 작다.
  • SRAM: 가장 빠른 속도를 제공하지만, 용량이 매우 작다.

이러한 기술적 한계를 극복하기 위해, 작은 용량의 빠른 SRAM과 큰 용량의 느린 메모리(DRAM, HDD)를 조합한 메모리 계층 구조를 사용한다.

 

2. 캐싱의 기본 개념

캐싱은 자주 사용하는 데이터를 작은 용량의 빠른 메모리에 저장하여 프로세서가 빠르게 접근할 수 있도록 하는 방법이다. 이 방식으로 메모리 접근 시간을 줄이고, 전체 시스템의 처리 속도를 높일 수 있다.

2.1. 캐시의 역할
캐시는 주로 다음과 같은 방식으로 사용된다:

  • 중요한 데이터 저장: 현재 작업 중인 데이터를 캐시에 저장해 빠르게 접근.
  • 덜 중요한 데이터는 느린 메모리로 이동: 공간을 확보하기 위해 현재 사용하지 않는 데이터는 느린 메모리로 이동.

2.2. 캐시의 구성 요소
캐시는 태그(tag)와 캐시 블록 또는 라인으로 구성된다:

  • 태그: 캐시에 어떤 데이터가 저장되어 있는지 식별.
  • 캐시 블록(또는 라인): 캐시 메모리에 저장되는 데이터 단위로, 데이터를 묶어 효율적으로 저장.

3. 메모리 계층 구조의 예시

메모리 계층 구조는 작은 용량의 빠른 메모리와 큰 용량의 느린 메모리를 조합하여 시스템 전체 성능을 최적화한다.

3.1. CPU와 메모리 계층 구조
CPU에서 가장 가까운 곳에 작은 용량의 빠른 SRAM을 배치하고, 그 뒤에 DRAM, HDD를 순서대로 배치한다.

  • SRAM(캐시): 빠른 접근이 가능하지만 용량이 작다.
  • DRAM(주 메모리): 중간 속도와 중간 용량.
  • HDD(보조 메모리): 큰 용량을 제공하지만, 속도가 매우 느리다.

3.2. 예시: 비디오 편집

 

비디오 편집과 같은 작업에서는 매우 큰 데이터가 필요하다. 이를 HDD에 저장하고, 편집할 때 필요한 부분만 DRAM으로 옮긴 후, 그중에서도 작업 중인 일부만 캐시로 이동하여 작업 속도를 높인다.

4. 현대 프로세서의 메모리 계층 구조 (Intel Nehalem)

현대 프로세서에서는 다단계 캐시를 사용하여 메모리 계층 구조를 구현한다.

4.1. Intel Nehalem의 메모리 계층 구조

  • L1 캐시: 각 코어에 32KB의 데이터 캐시와 32KB의 명령어 캐시를 제공.
  • L2 캐시: 각 코어에 256KB의 중간 크기 캐시를 제공.
  • L3 캐시: 모든 코어가 공유하는 8MB의 대형 캐시.
  • DRAM: 캐시 외부에 있는 메인 메모리.

4.2. 메모리 접근 시간 차이

  • L1 캐시: 접근 시간 약 4 사이클.
  • L2 캐시: 접근 시간 약 10 사이클.
  • L3 캐시: 접근 시간 약 40 사이클.
  • DRAM: 접근 시간 약 200 사이클.

이 계층 구조를 통해 메모리 접근 속도를 최적화하고, 프로세서와 메모리 간의 속도 차이를 줄일 수 있다.

 

캐시의 성능 분석과 계산

반응형

캐시의 유무에 따라 프로그램의 성능 차이가 크게 난다. 캐시를 사용할 경우와 사용하지 않을 경우의 메모리 접근 시간 차이를 예로 들어 보자:

캐시 사용 시

  • 캐시 접근 시간: 1 사이클.
  • 프로그램 실행 중 메모리에 접근하는 명령어가 발생했을 때, 해당 명령어가 캐시에 있는 경우 1 사이클 만에 실행된다.

캐시 미사용 시

  • 메모리 접근 시간: 100 사이클.
  • 동일한 명령어가 메모리에 접근할 때마다 100 사이클의 시간이 소요되므로, 캐시를 사용할 때에 비해 프로그램의 실행 시간이 크게 증가한다.

1. 캐시 성능 계산

캐시 성능을 계산하기 위해서는 다음 요소를 고려해야 한다:

  • 캐시 미스 시 DRAM 접근 시간(예: 100 사이클).
  • 캐시 히트 시 접근 시간(예: 1 사이클).
  • 메모리 접근을 필요로 하는 명령어 비율(보통 전체 명령어의 33%).

세 가지 시나리오를 통해 성능을 비교해 보자:

1.1. DRAM만 사용하는 경우

  • 33%의 명령어가 메모리를 접근하며, 매번 100 사이클이 소요된다.
  • 평균적으로 명령어 하나당 33 사이클이 메모리 접근에 소요된다.

1.2. 이상적인 캐시(100% 캐시 히트율)

  • 모든 메모리 접근이 캐시에서 해결된다.
  • 33%의 명령어가 메모리를 접근하며, 매번 1 사이클이 소요된다.
  • 평균적으로 명령어 하나당 0.33 사이클이 메모리 접근에 소요된다.

1.3. 현실적인 캐시(90% 캐시 히트율)

  • 33%의 명령어가 메모리를 접근한다.
  • 90%의 경우 캐시 히트(1 사이클 소요), 10%의 경우 캐시 미스(100 사이클 소요).
  • 평균 메모리 접근 시간 계산: 33×(0.9×1+0.1×100)=33×3.6=3.6사이클

결론

메모리 계층 구조는 시스템 성능을 높이는 핵심 기술로, 빠른 메모리와 느린 메모리를 조합해 프로세서의 성능을 극대화할 수 있다. 시간이 지남에 따라 프로세서의 속도는 더욱 빨라지고, 메모리와의 성능 격차는 더 커지고 있기 때문에, 메모리 계층 구조와 캐시 설계는 점점 더 중요해지고 있다.

특히 캐시는 프로그램의 성능에 지대한 영향을 미치며, 캐시 히트율이 높을수록 더 많은 작업을 빠르게 처리할 수 있게 된다. 따라서 캐시를 효율적으로 활용하기 위해서는 가능한 많은 데이터를 캐시에 저장하고, 이를 최적의 방식으로 관리하는 설계가 필요하다.

 

Reference

반응형

댓글