컴퓨터를 조립할 때 CPU, 메모리, 저장 장치를 모두 고려해야 한다. 메모리는 휘발성이고 하드디스크는 비휘발성이며 I/O 장치라는 사실은 익히 알려져 있다. 하지만 CPU 내부에도 데이터를 저장하는 공간이 존재한다는 점은 상대적으로 덜 알려져 있다.
CPU 내부의 레지스터와 L1/L2/L3 캐시 역시 저장 장치이며, CPU 코어에 근접해 있어 접근 속도가 극도로 빠르다. 이들과 메모리, SSD, HDD 간의 속도 차이는 어느 정도일까?
저장 장치 계층 구조
도서관에서 공부하는 상황을 상상해보자. 머릿속으로 문제를 해결하고 있는 것은 레지스터에 해당한다. 즉각적으로 접근 가능하지만 동시에 다룰 수 있는 정보의 양은 제한적이다.
머릿속에 저장된 단기 기억은 L1 캐시에, 장기 기억은 L2/L3 캐시에 비유할 수 있다. 책상 위에 펼쳐놓은 책은 메모리이고, 서가에 혀 있는 책은 하드디스크이다. 서가에서 책을 가져와 책상에 올리고, 머릿속에 기억하는 과정은 디스크→메모리→CPU 캐시/레지스터로 데이터가 이동하는 것과 같다.
속도가 빠를수록 에너지 소모가 크고 재료 비용도 비싸다. 따라서 고속 저장 장치는 용량이 작고, 저속 저장 장치는 용량이 크다.
각 저장 장치의 특성
레지스터
CPU의 제어 장치와 연산 장치에 가장 인접한 저장 공간이다. 32비트 CPU에서는 대부분 4바이트, 64비트 CPU에서는 8바이트를 저장한다. 접근 속도는 반 클럭 주기 이내이며, 2GHz CPU의 경우 약 0.5나노초에 해당한다.
CPU 캐시 (SRAM)
정적 랜덤 액세스 메모리(SRAM)를 사용한다. 전원이 공급되는 동안 데이터가 유지되며, 1비트당 6개의 트랜지스터가 필요해 저장 밀도는 낮지만 속도가 매우 빠르다.
L1 캐시: 레지스터에 버금가는 속도(2~4 클럭 주기), 용량은 수십~수백 KB. 명령 캐시와 데이터 캐시로 분리된다.
# L1 데이터 캐시 크기 확인
$ cat /sys/devices/system/cpu/cpu0/cache/index0/size
32K
# L1 명령 캐시 크기 확인
$ cat /sys/devices/system/cpu/cpu0/cache/index1/size
32K
L2 캐시: L1보다 CPU 코어에서 멀리 떨어져 있으며, 수백 KB~수 MB, 10~20 클 주기 소요.
$ cat /sys/devices/system/cpu/cpu0/cache/index2/size
256K
L3 캐시: 여러 코어가 공유하며, 수 MB~수십 MB, 20~60 클럭 주기 소요.
$ cat /sys/devices/system/cpu/cpu0/cache/index3/size
3072K
메모리 (DRAM)
동적 랜덤 액세스 메모리(DRAM)를 사용한다. 1비트당 1개의 트랜지스터와 1개의 커패시터로 구성되어 밀도가 높고 저렴하다. 하지만 커패시터의 누전으로 인해 주기적인 재충전(리프레시)이 필요해 "동적"이라는 명칭이 붙었다. 접근 속도는 200~300 클럭 주기이다.
SSD/HDD
SSD는 메모리와 유사한 구조로 비휘발성이다. 메모리보다 10~1000배 느리다. HDD는 물리적 회전을 통해 데이터를 읽어 메모리보다 약 10만 배 느리다.
계층 간 데이터 흐름
CPU는 모든 저장 장치와 직접 통신하지 않고, 인접한 계층과만 데이터를 교환한다. 캐시는 메모리에서 데이터를 가져오고, 메모리는 디스크에서 데이터를 로드한다. 이로 인해 캐싱 계 구조가 형성된다.
CPU가 데이터를 요청하면: 레지스터 → L1 → L2 → L3 → 메모리 순으로 탐색한다.
실제 성능 및 비용 비교
| 저장 장치 | 접근 지연 시간 | L1 대비 속도 |
|---|---|---|
| L1 캐시 | 1 나노초 | 1배 |
| 메모리 | 100 나노초 | 100배 느림 |
| SSD | 150 마이크로초 | 15만 배 느림 |
| HDD | 10 밀리초 | 1천만 배 느림 |
비용 면에서도 L1 캐시는 메모리보다 466배, HDD보다 17만 5천 배 비싸다.
시간 스케일 확장
L1 캐시 접근을 1초로 환산하면:
- 메모리 접근: 약 2분
- SSD 접근: 약 1.7일
- HDD 접근: 약 4개월
이러한 극명한 성능 차이가 계층적 캐시 구조의 필요성을 설명한다.