저장 장치 계층 구조
- CPU가 메모리에 접근하는 시간은 CPU 연산 속도보다 느리다.
- CPU와 가까운 저장 장치는 빠르고, 멀리 있는 저장 장치는 느리다.
- 속도가 빠른 저장 장치는 저장 용량이 작고, 가격이 비싸다.
즉, 낮은 가격대의 대용량 저장 장치를 원한다면 느린 속도를 감수해야 하고, 빠른 속도의 저장 장치를 원한다면 비싼 가격을 감수해야 한다.
저장 장치들은 'CPU에 얼마나 가까운가'를 기준으로 계층적으로 나타낼 수 있다.
캐시 메모리
- CPU와 메모리 사이에 위치한, 레지스터보다 용량이 크고 메모리보다 빠른 SRAM기반의 저장 장치
- CPU의 연산 속도와 메모리 접근 속도의 차이를 조금이나마 줄이기 위해 탄생
- CPU가 매번 메모리에서 왔다 갔다 하는 건 시간이 오래 걸리기 때문에 메모리에서 CPU가 사용할 일부 데이터를 미리 캐시 메모리에 저장하여 사용
- 메모리에 접근 => 물건을 사러 가는 것
- 메모리 => 물건은 많지만 집과는 떨어져 있어 왕복이 오래 걸리는 대형마트
- 캐시 메모리 => 물건이 많지는 않아도 집과 가까이 있는 편의점
캐시 메모리까지 반영한 저장 장치 계층 구조
가장 일반적으로 사용되는 계층적 캐시 메모리 구조
* 일반적으로 L1 캐시와 L2 캐시는 코어 내부에, L3 캐시는 코어 외부에 위치해 있다.
참조 지역성의 원리
캐시 메모리는 메모리보다 용량이 작다. 메모리의 모든 내용을 저장할 수 없다. "그렇다면 어떤 것을 저장해야 할까?"
> CPU가 자주 사용할 법한 내용을 예측하여 저장한다.
- 예측이 들어맞을 경우, CPU가 캐시 메모리에 저장된 값을 활용할 경우는 캐시 히트
- 예측이 틀렸을 경우, CPU가 메모리에 접근해야 하는 경우는 캐시 미스
- 캐시 적중률
* 캐시 히트 횟수 / 캐시 히트 횟수 + 캐시 미스 횟수
참조 지역성의 원리는 CPU가 메모리에 접근할 때 주된 경향을 바탕으로 만들어진 원리다.
- CPU는 최근 접근했던 메모리 공간에 다시 접근하려는 경향이 있다
아래 코드를 보고 num이 여러번 쓰인 다는 것을 알 수 있다.
#include <stdio.h>
int main(void) {
int num = 2;
for (int i = 1; <= 9; i++)
printf("%d X %d = %d\n", num, i, num * i);
return 0;
}
- CPU는 접근한 메모리 공간 근처를 접근하려는 경향이 있다.
워드 프로세서를 사용하고 있으면 워드 프로세서 관련 기능이 메모리를 자주 참조한다.
'컴퓨터공학' 카테고리의 다른 글
16. RAID의 정의와 종류 (0) | 2024.10.13 |
---|---|
15. 다양한 보조기억장치 (1) | 2024.10.12 |
13. 메모리의 주소 공간 (0) | 2024.10.09 |
12. RAM의 특징과 종류 (1) | 2024.10.08 |
11. 명령어 집합 구조, CISC와 RISC (1) | 2024.10.07 |