메모리의 계층 구조 (Memory Hierarchy)
메모리 계층 구조는 컴퓨터 시스템에서 데이터 접근의 효율성을 극대화하고 전체 시스템 성능을 향상시키기 위해 설계된 구조.
이 구조는 속도, 용량, 비용 간의 균형을 고려하여 여러 종류의 메모리를 계층적으로 배치한다.
메모리 계층 구조의 각 레벨은 위로 올라갈수록 다음과 같은 특성을 가진다.
- 접근 속도가 빨라짐
- 용량이 작아짐
- 비트당 가격이 높아짐
- CPU에 의한 접근 빈도가 증가함
이러한 계층 구조는 ‘참조 지역성(Locality of Reference)’ 원리를 활용하여 전체 시스템의 성능을 최적화한다.
자주 사용되는 데이터를 빠른 상위 계층에 유지함으로써, 평균 데이터 접근 시간을 줄이고 전체적인 시스템 성능을 향상시킨다.
참조 지역성(Locality of Reference)
컴퓨터 프로그램이 메모리에 접근하는 패턴에 관한 원리로, 프로그램이 일정 기간 동안 특정한 메모리 위치 집합에 집중적으로 접근하는 경향.
- 중요성
- 캐시 메모리 최적화: 참조 지역성 원리를 활용하여 캐시 메모리에 자주 사용되는 데이터를 저장함으로써 캐시 적중률(hit rate)을 높일 수 있다
- 시스템 성능 향상: 캐시 적중률이 높아지면 메모리 접근 시간이 줄어들어 전체적인 시스템 성능이 향상된다.
- 프로그램 최적화: 개발자가 참조 지역성을 고려하여 코드를 작성하면 프로그램의 실행 속도를 크게 개선할 수 있다.
- 유형
- 시간적 지역성 (Temporal Locality): 최근에 참조된 메모리 위치가 가까운 미래에 다시 참조될 가능성이 높다.
- 반복문에서 같은 변수를 여러 번 사용하는 경우
- 자주 호출되는 함수나 서브루틴
- 스택에 저장된 지역 변수에 대한 반복적인 접근
- 공간적 지역성 (Spatial Locality): 특정 메모리 위치가 참조되면, 그 주변의 메모리 위치들도 곧 참조될 가능성이 높다.
- 배열의 요소를 순차적으로 접근하는 경우
- 구조체의 멤버 변수들에 연속적으로 접근하는 경우
- 명령어들이 메모리에 연속적으로 저장되어 있는 경우
레지스터 (Register)
레지스터는 메모리 계층 구조의 최상위에 위치하며, CPU 내부에 존재한다.
특징:
- 가장 빠른 접근 속도를 제공
- 매우 작은 용량 (일반적으로 32비트 또는 64비트)
- CPU가 직접 사용할 수 있는 데이터를 저장
- 비용이 가장 높음
캐시 메모리 (Cache Memory)
캐시 메모리는 CPU와 주 메모리 사이에 위치하며, 자주 사용되는 데이터와 명령어를 저장한다.
종류:
- L1 캐시: CPU 코어에 가장 가까이 위치, 가장 빠르지만 용량이 작음 (보통 8~64KB)
- L2 캐시: L1보다 느리지만 더 큰 용량 (64KB~4MB)
- L3 캐시: 일부 프로세서에서 사용, L2보다 더 큰 용량
캐시 메모리는 SRAM(Static RAM)으로 구성되며, 빠른 접근 속도를 제공한다.
주 메모리 (Main Memory)
주 메모리는 일반적으로 RAM(Random Access Memory)을 의미한다.
특징:
- CPU가 직접 접근할 수 있는 가장 큰 메모리
- 주로 DRAM(Dynamic RAM)으로 구성
- 캐시보다 느리지만 더 큰 용량 제공
- 휘발성 메모리 (전원이 꺼지면 데이터 손실)
보조 기억 장치 (Secondary Storage)
보조 기억 장치는 메모리 계층 구조의 가장 하위에 위치한다.
특징:
- 하드 디스크 드라이브(HDD)나 솔리드 스테이트 드라이브(SSD) 등이 포함
- 가장 큰 용량을 제공
- 비휘발성 (전원이 꺼져도 데이터 유지)
- 접근 속도가 가장 느림