오늘 끝나면
메모리 계층과 병목
- ✓빠른 메모리는 작고 비싸다는 트레이드오프를 설명할 수 있음
- ✓레지스터→캐시→RAM→SSD 순으로 느려지고 커짐을 말할 수 있음
- ✓메모리 월이 왜 생기고 캐시가 어떻게 가리는지 설명할 수 있음
실습 미션
오른쪽 시뮬레이터에서 캐시 히트율을 90%와 50%로 바꿔보고, 평균 접근시간이 캐시 지연에 붙었다가 RAM 쪽으로 끌려가는 걸 직접 확인해 보셈.
성공 조건
- □위치 탭에서 RAM이 레지스터보다 수백 배 느림을 막대로 확인함
- □히트율 90%일 때 평균이 캐시 지연에 거의 붙는 걸 봄
- □히트율을 낮추면 평균이 RAM 지연 쪽으로 끌려가는 걸 봄
레지스터 · 캐시 · RAM · 메모리 월
메모리 계층과 병목
빠른 저장은 작고 비쌈. 큰 저장은 느림. 둘 다 가질 순 없어 층으로 쌓고, 캐시로 격차를 가림.
빠른 건 작고, 큰 건 느리다
저장장치엔 두 가지가 동시에 안 됨. 빠르면 작고 비쌈. 크면 느리고 쌈.
빠른 메모리(SRAM)는 비트 하나에 트랜지스터 6개를 씀. 비싸서 칩에 조금밖에 못 넣음.
느린 저장(DRAM·낸드)은 비트당 소자가 적어 쌈. 그래서 잔뜩 넣음. 대신 느림.
결국 '빠르고 크고 싼' 단일 메모리는 없음. 셋은 서로 당기는 트레이드오프임.
레지스터 — 속도 막대는 꽉 차는데 용량은 거의 0. 가장 빠른 대신 가장 작고 비싸 칩에 수십 개뿐임.
계층 — 레지스터 → 캐시 → RAM → SSD
그래서 저장을 층으로 쌓음. 위로 갈수록 빠르고 작고, 아래로 갈수록 느리고 큼.
맨 위는 레지스터. CPU 안에서 지금 계산 중인 값 몇십 개만 쥠. 1나노초 안쪽.
그 아래 캐시(L1~L3), 그 아래 RAM(DRAM), 맨 아래 SSD. 한 칸 내려갈수록 수십~수만 배 느려짐.
용량은 거꾸로 커짐. 레지스터 수백 바이트 → 캐시 수 MB → RAM 수십 GB → SSD 수 TB.
레지스터 — 지금 계산 중인 값 몇십 개만 쥠. 한 칸 내려갈수록 폭(용량)은 넓어지고 속도는 느려짐.
메모리 월 — CPU가 RAM을 기다린다
문제는 CPU는 매년 빨라졌는데 RAM은 그만큼 못 따라온 것임. 두 속도 곡선이 점점 벌어짐.
1980년대엔 CPU와 메모리 속도가 비슷했음. 지금은 RAM 한 번 가져오는 사이 CPU가 수백 번 계산함.
이 벌어진 격차를 메모리 월이라 부름(Wulf·McKee, 1995). CPU가 데이터를 기다리며 노는 시간이 병목임.
코어를 아무리 늘려도 데이터가 안 오면 다 같이 멈춤. 그래서 '빠른 CPU'만으로는 안 됨.
격차가 수백~수천 배로 벌어짐. CPU 한 박자에 RAM은 못 옴 — 이 기다림이 메모리 월임.
캐시가 격차를 가린다
해법은 캐시임. 자주 쓸 데이터를 CPU 바로 옆에 작게 복사해 둠. 책상 위에 올려두는 것임.
찾는 게 캐시에 있으면 히트(빠름), 없으면 미스라 멀리 RAM까지 감(느림).
프로그램은 한번 쓴 데이터를 곧 또 씀(지역성). 그래서 캐시 히트율이 보통 90%를 훌쩍 넘음.
평균 접근시간 = 히트율×캐시 + 미스율×RAM. 히트율이 높을수록 느린 RAM이 평균에서 가려짐.
프로그램은 한번 쓴 데이터를 곧 또 씀(지역성). 그래서 요청 대부분이 책상(캐시)에서 끝남.
직접 계층과 캐시를 만져보기
이제 오른쪽 시뮬레이터로 직접 확인해 볼 것. 두 가지를 만짐.
위치 탭 — 레지스터/캐시/RAM/SSD를 고르면 로그 스케일 막대로 접근시간 차이가 보임. 거리 비유로 지연을 체감함.
캐시 탭 — 히트율 슬라이더를 움직이면 평균 접근시간이 다시 계산됨. 90%와 50%를 비교해 볼 것.
히트율이 높으면 평균이 캐시에 붙고, 낮추면 RAM 쪽으로 끌려감 — 메모리 월이 어떻게 가려지는지 눈으로 보임.
캐시는 CPU 바로 옆 책상 위임. 자주 쓰는 것만 작게 올려둠.