Memory: Memory Hierarchy
메모리 계층 구조는 컴퓨터 시스템의 성능을 최적화하기 위해 속도, 용량, 비용이 다른 다양한 종류의 메모리를 계층적으로 조직화한 것을 말합니다. 프로세서(CPU)는 매우 빠르지만, 주 기억 장치(메인 메모리)는 프로세서보다 훨씬 느립니다. 이 속도 차이로 인해 발생하는 병목 현상을 줄이고, 프로세서가 필요한 데이터에 더 빠르게 접근할 수 있도록 하는 것이 메모리 계층 구조의 주된 목적입니다.
메모리 계층 구조의 기본 원리
메모리 계층 구조는 일반적으로 다음과 같은 원리를 기반으로 합니다:
속도 (Speed): CPU에 가까울수록 속도가 빠릅니다.
용량 (Size): CPU에서 멀어질수록 용량이 커집니다.
비용 (Cost): CPU에서 멀어질수록 비트당 비용이 저렴해집니다.
가장 빠른 메모리는 가장 작고 비싸며, 가장 느린 메모리는 가장 크고 저렴합니다.
메모리 계층의 구성 요소
일반적인 메모리 계층 구조는 다음과 같이 구성됩니다:
레지스터 (Registers):
CPU 내부에 위치하며, 가장 빠르고 비싼 메모리입니다.
현재 실행 중인 명령어의 피연산자나 주소 등 극히 소량의 데이터를 저장합니다.
캐시 메모리 (Cache Memory):
CPU 바로 옆에 위치하며, 레지스터 다음으로 빠릅니다.
주로 SRAM(Static Random Access Memory)으로 구성됩니다.
메인 메모리에서 자주 사용될 것으로 예상되는 데이터를 미리 가져와 저장하여 CPU가 더 빠르게 접근할 수 있도록 돕습니다.
L1, L2, L3 캐시 등 여러 레벨로 나뉘기도 합니다.
주 기억 장치 (Main Memory):
주로 DRAM(Dynamic Random Access Memory)으로 구성됩니다.
CPU가 직접 접근할 수 있는 가장 큰 휘발성 저장 공간입니다.
현재 실행 중인 프로그램과 데이터를 저장합니다.
보조 기억 장치 (Secondary Storage):
하드 디스크(Magnetic disk)와 같은 비휘발성 저장 장치입니다.
가장 느리지만 가장 큰 용량을 가지며, 비트당 비용이 가장 저렴합니다.
장기적으로 데이터를 저장하며, 가상 메모리 기법에서 메인 메모리의 '캐시' 역할을 합니다.
메모리 구조에서 블록(Block) 은 정보를 복사하는 최소 단위를 의미합니다. 상위 메모리에서 하위 메모리 간에 데이터가 전송될 때 사용되는 기본 단위입니다.
지역성의 원리 (Principle of Locality)
메모리 계층 구조가 효과적으로 작동하는 핵심적인 이유는 '지역성의 원리' 때문입니다. 프로그램의 메모리 접근 패턴은 무작위적이지 않고 특정 경향을 보이는데, 이를 활용하여 성능을 향상시킵니다.
시간 지역성 (Temporal Locality):
최근에 접근했던 데이터는 가까운 미래에 다시 접근될 가능성이 높다는 원리입니다.
예를 들어, 루프 변수는 반복적으로 사용되므로 캐시에 저장하면 다음 접근 시 빠르게 가져올 수 있습니다.
공간 지역성 (Spatial Locality):
특정 데이터에 접근했을 때, 그 데이터의 주변(가까운 주소)에 있는 데이터들도 가까운 미래에 접근될 가능성이 높다는 원리입니다.
배열이나 순차적으로 접근하는 코드의 경우 이 원리가 적용됩니다.
메모리가 잘 정돈되어 있음이 가정되어야 합니다.
캐시 메모리의 작동 방식
캐시 메모리는 지역성의 원리를 활용하여 CPU와 메인 메모리 간의 속도 차이를 줄입니다.
히트 (Hit): CPU가 요청한 데이터가 캐시 메모리에 존재할 경우를 '캐시 히트'라고 합니다. 이 경우 CPU는 빠르게 데이터를 가져올 수 있습니다.
Hit ratio = Number of cache hits / (Number of cache hits + Number of cache misses)
미스 (Miss): CPU가 요청한 데이터가 캐시 메모리에 없을 경우를 '캐시 미스'라고 합니다. 이 경우 캐시 컨트롤러는 메인 메모리에서 해당 데이터를 찾아 캐시로 가져오고, 그제야 CPU에 전달합니다.
캐시 미스가 발생했을 때 데이터를 가져오는 데 걸리는 시간(상위 레벨 블록을 하위 레벨 블록으로 교체하는 데 걸리는 시간 + 블록을 프로세서로 전달하는 시간)을 **미스 패널티(Miss Penalty)**라고 합니다. 이 시간을 줄이는 것이 캐시 설계의 중요한 목표 중 하나입니다.