캐시 메모리는 무엇이며, 어떻게 동작할까?
저장 장치의 계층 구조 (Memory Hierarchy)
--
용량이 크면서 빠른 저장 장치가 있다면 저장 장치들의 구조를 생각할 필요가 없지만
"빠른 저장 장치"와 "용량이 큰 저장 장치"는 양립하기 어렵다.
저장 장치의 일반적인 명제
- CPU와 가까운 저장 장치는 빠름 / 멀리 있는 저장 장치는 느림
- 속도가 빠르면 용량이 적고, 비쌈
일반적인 저장 장치 비교
- 레지스터 (CPU 내부)
- 메모리 (RAM, 주기억장치)
- USB (보조기억장치)
CPU와 가까운 순
레지스터 > 메모리 > USB
CPU 접근 속도(시간) 빠른 순
레지스터 > 메모리 > USB
저장 용량 큰 순
USB > 메모리 > 레지스터
저장 용량 대비 가격이 비싼 순
레지스터 > 메모리 > USB
즉, 대용량 저장 장치는 느린 속도를 감수해야 하며,
빠른 속도의 메모리는 작은 용량과 비싼 가격을 감수해야 한다.
이렇게 저장 장치들은 장단점이 명확하여
특정 저장 장치만 사용하지 않고 상황에 알맞게 사용하기 위해 다양한 저장 장치를 모두 사용하게 된다.
이때, 사용 중인 저장 장치들을 "CPU에 얼마나 가까운지"를 기준으로 계층적으로 나타낼 수 있는데
이를 "저장 장치 계층 구조 (Memory Hierarchy)"라고 부른다.
--
캐시 메모리 (Cache Memory)
--
CPU가 메모리에 접근하는 속도는 레지스터에 접근하는 속도보다 훨씬 느리다.
하지만 프로그램을 실행하는 과정에서 CPU는 메모리에 빈번히 접근해야 한다.
CPU의 연산 속도가 아무리 빨라도
메모리에 접근하는 속도가 느리면 아무 소용이 없다.
(CPU가 메모리에 접근하는 것을 기다려야 하기 때문)
이를 해결하기 위해 "캐시 메모리"라는 저장 장치를 사용하게 된다.
캐시 메모리는
CPU와 메모리 사이에 위치하며,
레지스터보다 용량이 크고, 메모리보다 속도가 빠른 SRAM 기반의 저장 장치다.
일반적으로 캐시 메모리는 CPU 내부에 내장되어 있다.
이는 CPU의 연산 속도와 메모리 접근 속도의 차이를 조금이나마 줄이기 위해 탄생했으며,
CPU가 매번 메모리에 접근하는 것을 방지하게 위해
메모리에서 CPU가 사용할 일부 데이터를 미리 캐시 메모리로 가지고 와서 활용하는 장치다.
캐시 메모리를 포함한 "저장 장치 계층 구조"
캐시 메모리에는 여러 개의 캐시 메모리가 존재한다.
- L1
- L2
- L3
CPU의 코어와 가까운 순서
L1 > L2 > L3
속도 빠른 순서
L1 > L2 > L3
캐시 메모리 용량이 큰 순서
L3 > L2 > L1
L1, L2 코어는
일반적으로 CPU의 코어 내부에 존재하며
CPU의 코어마다 고유한 캐시 메모리로 할당된다.
L3코어는
PU의 코어 외부에 존재하지만, CPU 내부에 존재하며
여러 CPU의 코어들이 공유하는 캐시 메모리로 사용된다.
코어와 가장 가까운 L1 캐시는
조금이라도 접근 속도를 빠르게 만들기 위해
- 명령어만 저장하는 L1캐시 ( 해당 캐시 명칭 = L1I )
- 데이터만 저장하는 L1캐시 ( 해당 캐시 명칭 = L1D )
로 분리하여하는 하는 경우도 존재한다.
이를 "분리형 캐시(Split Cache)"라고 부른다.
조금 더 세부적인 "저장 장치 계층 구조"
--
참조 지역성 원리
--
캐시 메모리는 메모리보다 용량이 적다.
그래서 캐시 메모리에는 메모리의 모든 내용을 저장할 수 없기 때문에
일부를 복사하여 저장하게 된다.
이때 저장하는 데이터의 기준은
CPU가 사용할 법한 데이터를 예측하여 저장하게 된다.
만약 예측하여 저장한 데이터가 실제로 활용될 경우를 "캐시 히트(Cache Hit)"라고 부른다.
하지만 예측이 틀려 메모리에서 필요한 데이터를 직접 가져와야 하는 경우를 "캐시 미스(Cache Miss)"라고 부른다.
캐시 미스가 자주 발생하게 되면 성능이 떨어지게 된다.
캐시 히트 비율 계산식 (캐시 적중률)
캐시 히트 횟수 / (캐시 히트 획수 + 캐시 미스 횟수)
일반적으로 캐시 적중률은 85~95% 이상이다.
CPU가 사용할 법한 데이터를 제대로 예측하는 방법은
한 가지 원칙에 따라 메모리로부터 가져올 데이터를 결정하는 방법으로
이를 "참조 지역성의 원리"라고 한다.
참조 지역성의 원리는
CPU가 메모리에 접근할 때의 주된 경향을 바탕으로 만들어진 원리다.
- CPU는 최근 접근했던 메모리 공간에 다시 접근하려는 경향이 있다.
- CPU는 접근한 메모리 공간 근처를 접근하려는 경향이 있다.
--
'CS > 컴퓨터 구조' 카테고리의 다른 글
메모리 (RAM) (0) | 2024.08.29 |
---|---|
[CPU 성능 향상] ISA (+ CISC, RISC) (0) | 2024.08.28 |
[CPU 성능 향상] 명령어 병렬 처리 기법 (0) | 2024.08.27 |
[CPU 성능 향상] 클럭, 멀티코어, 멀티스레드 (0) | 2024.08.26 |
[CPU 작동 원리] 명령어 사이클과 인터럽트 (0) | 2024.08.25 |